Version19.92.1

This commit is contained in:
Antonio Cañas Vargas 2019-12-15 01:10:36 +01:00
parent 73a09d5846
commit 9ad0384944
14 changed files with 122 additions and 118 deletions

View File

@ -130,35 +130,38 @@ extern const char Str_BIN_TO_BASE64URL[64 + 1];
// Add new functions at the end
static const char *API_Functions[1 + API_NUM_FUNCTIONS] =
{
"?", // 0 ==> unknown function
"loginBySession", // 1
"loginByUserPassword", // 2 (deprecated)
"loginByUserPasswordKey", // 3
"getCourses", // 4
"getUsers", // 5
"getNotifications", // 6
"getTestConfig", // 7
"getTests", // 8
"sendMessage", // 9
"sendNotice", // 10
"getDirectoryTree", // 11
"getGroups", // 12
"getGroupTypes", // 13
"sendMyGroups", // 14
"getFile", // 15
"markNotificationsAsRead", // 16
"getNewPassword", // 17
"getCourseInfo", // 18
"getAttendanceEvents", // 19
"sendAttendanceEvent", // 20
"getAttendanceUsers", // 21
"sendAttendanceUsers", // 22
"createAccount", // 23
"getMarks", // 24
"getTrivialQuestion", // 25
"findUsers", // 26
"removeAttendanceEvent", // 27
"getGames", // 28
[API_unknown ] = "?", // 0 ==> unknown function
[API_loginBySessionKey ] = "loginBySession", // 1
[API_loginByUserPassword ] = "loginByUserPassword", // 2 (deprecated)
[API_loginByUserPasswordKey ] = "loginByUserPasswordKey", // 3
[API_getCourses ] = "getCourses", // 4
[API_getUsers ] = "getUsers", // 5
[API_getNotifications ] = "getNotifications", // 6
[API_getTestConfig ] = "getTestConfig", // 7
[API_getTests ] = "getTests", // 8
[API_sendMessage ] = "sendMessage", // 9
[API_sendNotice ] = "sendNotice", // 10
[API_getDirectoryTree ] = "getDirectoryTree", // 11
[API_getGroups ] = "getGroups", // 12
[API_getGroupTypes ] = "getGroupTypes", // 13
[API_sendMyGroups ] = "sendMyGroups", // 14
[API_getFile ] = "getFile", // 15
[API_markNotificationsAsRead] = "markNotificationsAsRead", // 16
[API_getNewPassword ] = "getNewPassword", // 17
[API_getCourseInfo ] = "getCourseInfo", // 18
[API_getAttendanceEvents ] = "getAttendanceEvents", // 19
[API_sendAttendanceEvent ] = "sendAttendanceEvent", // 20
[API_getAttendanceUsers ] = "getAttendanceUsers", // 21
[API_sendAttendanceUsers ] = "sendAttendanceUsers", // 22
[API_createAccount ] = "createAccount", // 23
[API_getMarks ] = "getMarks", // 24
[API_getTrivialQuestion ] = "getTrivialQuestion", // 25
[API_findUsers ] = "findUsers", // 26
[API_removeAttendanceEvent ] = "removeAttendanceEvent", // 27
[API_getGames ] = "getGames", // 28
[API_getMatches ] = "getMatches", // 29
[API_getMatchStatus ] = "getMatchStatus", // 30
[API_answerMatchQuestion ] = "answerMatchQuestion", // 31
};
/* Web service roles (they do not match internal swad-core roles) */
@ -1306,23 +1309,23 @@ int swad__getCourseInfo (struct soap *soap,
int Result = SOAP_OK;
const char *NamesInWSForInfoType[Inf_NUM_INFO_TYPES] =
{
"introduction", // Inf_INTRODUCTION
"guide", // Inf_TEACHING_GUIDE
"lectures", // Inf_LECTURES
"practicals", // Inf_PRACTICALS
"bibliography", // Inf_BIBLIOGRAPHY
"FAQ", // Inf_FAQ
"links", // Inf_LINKS
"assessment", // Inf_ASSESSMENT
[Inf_INTRODUCTION ] = "introduction",
[Inf_TEACHING_GUIDE] = "guide",
[Inf_LECTURES ] = "lectures",
[Inf_PRACTICALS ] = "practicals",
[Inf_BIBLIOGRAPHY ] = "bibliography",
[Inf_FAQ ] = "FAQ",
[Inf_LINKS ] = "links",
[Inf_ASSESSMENT ] = "assessment",
};
const char *NamesInWSForInfoSrc[Inf_NUM_INFO_SOURCES] =
{
"none", // Inf_INFO_SRC_NONE
"editor", // Inf_INFO_SRC_EDITOR
"plainText", // Inf_INFO_SRC_PLAIN_TEXT
"richText", // Inf_INFO_SRC_RICH_TEXT
"page", // Inf_INFO_SRC_PAGE
"URL", // Inf_INFO_SRC_URL
[Inf_INFO_SRC_NONE ] = "none",
[Inf_INFO_SRC_EDITOR ] = "editor",
[Inf_INFO_SRC_PLAIN_TEXT] = "plainText",
[Inf_INFO_SRC_RICH_TEXT ] = "richText",
[Inf_INFO_SRC_PAGE ] = "page",
[Inf_INFO_SRC_URL ] = "URL",
};
/***** Initializations *****/
@ -1359,8 +1362,8 @@ int swad__getCourseInfo (struct soap *soap,
"Requester must belong to course");
/***** Get info source *****/
for (InfoType = (Inf_InfoType_t) 0;
InfoType < Inf_NUM_INFO_TYPES;
for (InfoType = (Inf_InfoType_t) 0;
InfoType <= (Inf_InfoType_t) (Inf_NUM_INFO_TYPES - 1);
InfoType++)
if (!strcmp (infoType,NamesInWSForInfoType[InfoType]))
break;
@ -3178,9 +3181,9 @@ static int API_GetMyLanguage (void)
row = mysql_fetch_row (mysql_res);
/* Get language (row[0]) */
Gbl.Prefs.Language = Lan_LANGUAGE_UNKNOWN; // Language unknown
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
Gbl.Prefs.Language = Lan_LANGUAGE_UNKNOWN;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) (Lan_NUM_LANGUAGES - 1);
Lan++)
if (!strcasecmp (row[0],Lan_STR_LANG_ID[Lan]))
{

View File

@ -31,7 +31,7 @@
/***************************** Public constants ******************************/
/*****************************************************************************/
#define API_NUM_FUNCTIONS 28
#define API_NUM_FUNCTIONS 31
/*****************************************************************************/
/******************************* Public types ********************************/

View File

@ -750,7 +750,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
/* Start/end date/time */
UniqueId++;
for (StartEndTime = (Dat_StartEndTime_t) 0;
for (StartEndTime = (Dat_StartEndTime_t) 0;
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{

View File

@ -367,7 +367,7 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
/* Start/end date/time */
UniqueId++;
for (StartEndTime = (Dat_StartEndTime_t) 0;
for (StartEndTime = (Dat_StartEndTime_t) 0;
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{

View File

@ -413,7 +413,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
/* Start/end date/time */
UniqueId++;
for (StartEndTime = (Dat_StartEndTime_t) 0;
for (StartEndTime = (Dat_StartEndTime_t) 0;
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{

View File

@ -2576,7 +2576,7 @@ static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable)
HTM_TH_Empty (1);
for (Order = Ctr_ORDER_BY_CENTRE;
for (Order = Ctr_ORDER_BY_CENTRE;
Order <= Ctr_ORDER_BY_NUM_TCHS;
Order++)
{

View File

@ -490,13 +490,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.92 (2019-12-14)"
#define Log_PLATFORM_VERSION "SWAD 19.92.1 (2019-12-15)"
#define CSS_FILE "swad19.90.1.css"
#define JS_FILE "swad19.91.1.js"
/*
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
// TODO: Impedir la creación y edición de proyectos si no son editables.
Version 19.92.1: Dec 15, 2019 Code refactoring. (248629 lines)
Version 19.92: Dec 14, 2019 New module for log database tables. (248625 lines)
Version 19.91.2: Dec 14, 2019 Code refactoring related to doubles. (248538 lines)
Version 19.91.1: Dec 14, 2019 Changes in match layout. (248533 lines)

View File

@ -697,8 +697,8 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
/***** Get users' sex (row[2]) *****/
Usrs->Sex = Usr_SEX_UNKNOWN;
if (NumSexs == 1)
for (Sex = (Usr_Sex_t) 0;
Sex < Usr_NUM_SEXS;
for (Sex = (Usr_Sex_t) 0;
Sex <= (Usr_Sex_t) (Usr_NUM_SEXS - 1);
Sex++)
if (!strcasecmp (row[2],Usr_StringsSexDB[Sex]))
{

View File

@ -1065,8 +1065,8 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
SubQueryNam2[0] = '\0';
SubQueryWWW1[0] = '\0';
SubQueryWWW2[0] = '\0';
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
snprintf (StrField,sizeof (StrField),
@ -1156,8 +1156,8 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
switch (GetExtraData)
{
case Cty_GET_BASIC_DATA:
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
Cty->Name[Lan][0] = '\0';
@ -1173,8 +1173,8 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
break;
case Cty_GET_EXTRA_DATA:
/* Get the name of the country in several languages */
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
Str_Copy (Cty->Name[Lan],row[1 + Lan],
@ -1323,8 +1323,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
return false;
/***** Clear data *****/
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
Cty->Name[Lan][0] = '\0';
@ -1337,8 +1337,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
/***** Check if country code is correct *****/
if (Cty->CtyCod == 0)
{
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
if (Lan == Gbl.Prefs.Language)
Str_Copy (Cty->Name[Lan],Txt_Another_country,
@ -1367,8 +1367,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
SubQueryNam2[0] = '\0';
SubQueryWWW1[0] = '\0';
SubQueryWWW2[0] = '\0';
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
snprintf (StrField,sizeof (StrField),
@ -1432,8 +1432,8 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
break;
case Cty_GET_EXTRA_DATA:
/* Get name and WWW of the country in several languages */
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
Str_Copy (Cty->Name[Lan],row[Lan],
@ -1649,8 +1649,8 @@ static void Cty_ListCountriesForEdition (void)
HTM_TR_End ();
/* Country name in several languages */
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
HTM_TR_Begin (NULL);
@ -2075,8 +2075,8 @@ static void Cty_PutFormToCreateCountry (void)
HTM_TR_End ();
/***** Country name in several languages *****/
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
HTM_TR_Begin (NULL);
@ -2206,8 +2206,8 @@ void Cty_RecFormNewCountry (void)
else // Alphabetic code correct
{
/* Get country name and WWW in different languages */
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
snprintf (ParamName,sizeof (ParamName),
@ -2274,8 +2274,8 @@ static void Cty_CreateCountry (void)
SubQueryNam2[0] = '\0';
SubQueryWWW1[0] = '\0';
SubQueryWWW2[0] = '\0';
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
snprintf (StrField,sizeof (StrField),
@ -2483,8 +2483,8 @@ static void Cty_EditingCountryConstructor (void)
/***** Reset country *****/
Cty_EditingCty->CtyCod = -1L;
Cty_EditingCty->Alpha2[0] = '\0';
for (Lan = (Lan_Language_t) 1;
Lan <= Lan_NUM_LANGUAGES;
for (Lan = (Lan_Language_t) 1;
Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES;
Lan++)
{
Cty_EditingCty->Name[Lan][0] = '\0';

View File

@ -3381,8 +3381,8 @@ static void Crs_EditingCourseConstructor (void)
Crs_EditingCrs->Status = 0;
Crs_EditingCrs->ShrtName[0] = '\0';
Crs_EditingCrs->FullName[0] = '\0';
for (Role = (Rol_Role_t) 0;
Role < Rol_NUM_ROLES;
for (Role = (Rol_Role_t) 0;
Role <= (Rol_Role_t) (Rol_NUM_ROLES - 1);
Role++)
Crs_EditingCrs->NumUsrs[Role] = 0;
}

View File

@ -115,7 +115,7 @@ void Dat_PutBoxToSelectDateFormat (void)
Frm_StartForm (ActChgDatFmt);
HTM_UL_Begin ("class=\"LIST_LEFT\"");
for (Format = (Dat_Format_t) 0;
for (Format = (Dat_Format_t) 0;
Format <= (Dat_Format_t) (Dat_NUM_OPTIONS_FORMAT - 1);
Format++)
{
@ -499,11 +499,11 @@ void Dat_PutFormStartEndClientLocalDateTimes (time_t TimeUTC[2],
Dat_StartEndTime_t StartEndTime;
const char *Id[Dat_NUM_START_END_TIME] =
{
"Start", // Dat_START_TIME
"End" // Dat_END_TIME
[Dat_START_TIME] = "Start",
[Dat_END_TIME ] = "End",
};
for (StartEndTime = Dat_START_TIME;
for (StartEndTime = Dat_START_TIME;
StartEndTime <= Dat_END_TIME;
StartEndTime++)
{

View File

@ -502,7 +502,7 @@ static void DT_PutHeadDegreeTypesForSeeing (Act_Action_t NextAction,DT_Order_t S
HTM_TR_Begin (NULL);
HTM_TH_Empty (1);
for (Order = DT_ORDER_BY_DEGREE_TYPE;
for (Order = DT_ORDER_BY_DEGREE_TYPE;
Order <= DT_ORDER_BY_NUM_DEGREES;
Order++)
{

View File

@ -121,7 +121,7 @@ void Dpt_SeeDepts (void)
/***** Write heading *****/
HTM_TR_Begin (NULL);
for (Order = Dpt_ORDER_BY_DEPARTMENT;
for (Order = Dpt_ORDER_BY_DEPARTMENT;
Order <= Dpt_ORDER_BY_NUM_TCHS;
Order++)
{

View File

@ -225,8 +225,8 @@ void Fig_ReqShowFigures (void)
HTM_TxtF ("%s:&nbsp;",Txt_Statistic);
HTM_SELECT_Begin (false,
"name=\"FigureType\"");
for (FigureType = (Fig_FigureType_t) 0;
FigureType < Fig_NUM_FIGURES;
for (FigureType = (Fig_FigureType_t) 0;
FigureType <= (Fig_FigureType_t) (Fig_NUM_FIGURES - 1);
FigureType++)
{
FigureTypeUnsigned = (unsigned) FigureType;
@ -308,34 +308,34 @@ void Fig_ShowFigures (void)
{
static void (*Fig_Function[Fig_NUM_FIGURES])(void) = // Array of pointers to functions
{
Fig_GetAndShowUsersStats, // Fig_USERS
Fig_GetAndShowUsersRanking, // Fig_USERS_RANKING
Fig_GetAndShowHierarchyStats, // Fig_HIERARCHY
Fig_GetAndShowInstitutionsStats, // Fig_INSTITS
Fig_GetAndShowDegreeTypesStats, // Fig_DEGREE_TYPES
Fig_GetAndShowFileBrowsersStats, // Fig_FOLDERS_AND_FILES
Fig_GetAndShowOERsStats, // Fig_OER
Fig_GetAndShowAssignmentsStats, // Fig_ASSIGNMENTS
Fig_GetAndShowProjectsStats, // Fig_PROJECTS
Fig_GetAndShowTestsStats, // Fig_TESTS
Fig_GetAndShowGamesStats, // Fig_GAMES
Fig_GetAndShowSurveysStats, // Fig_SURVEYS
Fig_GetAndShowTimelineActivityStats, // Fig_SOCIAL_ACTIVITY
Fig_GetAndShowFollowStats, // Fig_FOLLOW
Fig_GetAndShowForumStats, // Fig_FORUMS
Fig_GetAndShowNumUsrsPerNotifyEvent, // Fig_NOTIFY_EVENTS
Fig_GetAndShowNoticesStats, // Fig_NOTICES
Fig_GetAndShowMsgsStats, // Fig_MESSAGES
Net_ShowWebAndSocialNetworksStats, // Fig_SOCIAL_NETWORKS
Fig_GetAndShowNumUsrsPerLanguage, // Fig_LANGUAGES
Fig_GetAndShowNumUsrsPerFirstDayOfWeek, // Fig_FIRST_DAY_OF_WEEK
Fig_GetAndShowNumUsrsPerDateFormat, // Fig_DATE_FORMAT
Fig_GetAndShowNumUsrsPerIconSet, // Fig_ICON_SETS
Fig_GetAndShowNumUsrsPerMenu, // Fig_MENUS
Fig_GetAndShowNumUsrsPerTheme, // Fig_THEMES
Fig_GetAndShowNumUsrsPerSideColumns, // Fig_SIDE_COLUMNS
Fig_GetAndShowNumUsrsPerPrivacy, // Fig_PRIVACY
Fig_GetAndShowNumUsrsPerCookies, // Fig_COOKIES
[Fig_USERS ] = Fig_GetAndShowUsersStats,
[Fig_USERS_RANKING ] = Fig_GetAndShowUsersRanking,
[Fig_HIERARCHY ] = Fig_GetAndShowHierarchyStats,
[Fig_INSTITS ] = Fig_GetAndShowInstitutionsStats,
[Fig_DEGREE_TYPES ] = Fig_GetAndShowDegreeTypesStats,
[Fig_FOLDERS_AND_FILES] = Fig_GetAndShowFileBrowsersStats,
[Fig_OER ] = Fig_GetAndShowOERsStats,
[Fig_ASSIGNMENTS ] = Fig_GetAndShowAssignmentsStats,
[Fig_PROJECTS ] = Fig_GetAndShowProjectsStats,
[Fig_TESTS ] = Fig_GetAndShowTestsStats,
[Fig_GAMES ] = Fig_GetAndShowGamesStats,
[Fig_SURVEYS ] = Fig_GetAndShowSurveysStats,
[Fig_TIMELINE ] = Fig_GetAndShowTimelineActivityStats,
[Fig_FOLLOW ] = Fig_GetAndShowFollowStats,
[Fig_FORUMS ] = Fig_GetAndShowForumStats,
[Fig_NOTIFY_EVENTS ] = Fig_GetAndShowNumUsrsPerNotifyEvent,
[Fig_NOTICES ] = Fig_GetAndShowNoticesStats,
[Fig_MESSAGES ] = Fig_GetAndShowMsgsStats,
[Fig_SOCIAL_NETWORKS ] = Net_ShowWebAndSocialNetworksStats,
[Fig_LANGUAGES ] = Fig_GetAndShowNumUsrsPerLanguage,
[Fig_FIRST_DAY_OF_WEEK] = Fig_GetAndShowNumUsrsPerFirstDayOfWeek,
[Fig_DATE_FORMAT ] = Fig_GetAndShowNumUsrsPerDateFormat,
[Fig_ICON_SETS ] = Fig_GetAndShowNumUsrsPerIconSet,
[Fig_MENUS ] = Fig_GetAndShowNumUsrsPerMenu,
[Fig_THEMES ] = Fig_GetAndShowNumUsrsPerTheme,
[Fig_SIDE_COLUMNS ] = Fig_GetAndShowNumUsrsPerSideColumns,
[Fig_PRIVACY ] = Fig_GetAndShowNumUsrsPerPrivacy,
[Fig_COOKIES ] = Fig_GetAndShowNumUsrsPerCookies,
};
/***** Get the type of figure ******/