Version 21.51: Nov 04, 2021 Eliminated the limit of origin courses in messages.

This commit is contained in:
acanas 2021-11-05 00:13:10 +01:00
parent f99d0b0faa
commit df0dc40476
3 changed files with 42 additions and 65 deletions

View File

@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
*/
#define Log_PLATFORM_VERSION "SWAD 21.50.1 (2021-11-03)"
#define Log_PLATFORM_VERSION "SWAD 21.51 (2021-11-04)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.69.1.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 21.51: Nov 04, 2021 Eliminated the limit of origin courses in messages. (321735 lines)
Version 21.50.1: Nov 03, 2021 Queries moved to module swad_user_database and other modules. (321759 lines)
Version 21.50: Nov 03, 2021 Queries moved to module swad_user_database and other modules. (321696 lines)
Version 21.49: Nov 03, 2021 New module swad_user_database for database queries related to users. (321615 lines)

View File

@ -109,7 +109,6 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
static void Msg_PutIconsListMsgs (void *Messages);
static void Msg_PutHiddenParamsOneMsg (void *Messages);
static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages);
static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Messages);
static void Msg_ShowFormToFilterMsgs (const struct Msg_Messages *Messages);
@ -180,7 +179,6 @@ static void Msg_ResetMessages (struct Msg_Messages *Messages)
{
Messages->NumMsgs = 0;
Messages->Subject[0] = '\0';
Messages->NumCourses = 0;
Messages->FilterCrsCod = -1L;
Messages->FilterCrsShrtName[0] = '\0';
Messages->FilterFromTo[0] = '\0';
@ -1462,7 +1460,6 @@ static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages)
Msg_GetParamFilterFromTo (Messages);
Msg_GetParamFilterContent (Messages);
Msg_DB_MakeFilterFromToSubquery (Messages,FilterFromToSubquery);
Msg_GetDistinctCoursesInMyMessages (Messages);
/***** Get number of unread messages *****/
switch (Messages->TypeOfMessages)
@ -1473,11 +1470,9 @@ static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages)
FilterFromToSubquery);
break;
case Msg_SENT:
default:
NumUnreadMsgs = 0;
break;
default:
NumUnreadMsgs = 0;
break;
}
/***** Get messages from database *****/
@ -1790,18 +1785,28 @@ void Msg_PutHiddenParamsMsgsFilters (void *Messages)
}
/*****************************************************************************/
/********************* Get dictinct courses in my messages *******************/
/********* Show form to select course for sent or received messages **********/
/*****************************************************************************/
static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Messages)
{
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Messages_received_from_A_COURSE;
extern const char *Txt_Messages_sent_from_A_COURSE;
extern const char *Txt_any_course;
const char *TxtSelector[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_Messages_received_from_A_COURSE,
[Msg_SENT ] = Txt_Messages_sent_from_A_COURSE
};
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned NumCrss = 0; // Initialized to avoid warning
unsigned NumCrs;
struct Crs_Course Crs;
long CrsCod;
/***** Get distinct courses in my messages from database *****/
/***** Get distinct courses in my messages *****/
switch (Messages->TypeOfMessages)
{
case Msg_RECEIVED:
@ -1814,65 +1819,36 @@ static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
break;
}
/***** Get distinct courses in messages from database *****/
Messages->NumCourses = 0;
for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
{
/* Get next course */
row = mysql_fetch_row (mysql_res);
Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
if (Crs.CrsCod > 0 && Messages->NumCourses < Crs_MAX_COURSES_PER_USR)
if (Crs_GetDataOfCourseByCod (&Crs))
{
Messages->Courses[Messages->NumCourses].CrsCod = Crs.CrsCod;
Str_Copy (Messages->Courses[Messages->NumCourses].ShrtName,Crs.ShrtName,
sizeof (Messages->Courses[Messages->NumCourses].ShrtName) - 1);
Messages->NumCourses++;
}
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
/*****************************************************************************/
/********* Show form to select course for sent or received messages **********/
/*****************************************************************************/
static void Msg_ShowFormSelectCourseSentOrRecMsgs (const struct Msg_Messages *Messages)
{
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Messages_received_from_A_COURSE;
extern const char *Txt_Messages_sent_from_A_COURSE;
extern const char *Txt_any_course;
unsigned NumOriginCrs;
const char *TxtSelector[Msg_NUM_TYPES_OF_MSGS] =
{
[Msg_WRITING ] = NULL,
[Msg_RECEIVED] = Txt_Messages_received_from_A_COURSE,
[Msg_SENT ] = Txt_Messages_sent_from_A_COURSE
};
/***** Course selection *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtF ("%s&nbsp;",TxtSelector[Messages->TypeOfMessages]);
HTM_SELECT_Begin (HTM_DONT_SUBMIT_ON_CHANGE,
"name=\"FilterCrsCod\"");
/* Write a first option to select any course */
HTM_OPTION (HTM_Type_STRING,"",
Messages->FilterCrsCod < 0,false,
"%s",Txt_any_course);
/***** Write an option for each origin course *****/
for (NumOriginCrs = 0;
NumOriginCrs < Messages->NumCourses;
NumOriginCrs++)
HTM_OPTION (HTM_Type_LONG,&Messages->Courses[NumOriginCrs].CrsCod,
Messages->Courses[NumOriginCrs].CrsCod == Messages->FilterCrsCod,false,
"%s",Messages->Courses[NumOriginCrs].ShrtName);
/* Write an option for each origin course */
for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
{
/* Get next course */
row = mysql_fetch_row (mysql_res);
if ((CrsCod = Str_ConvertStrCodToLongCod (row[0])) > 0)
HTM_OPTION (HTM_Type_LONG,&CrsCod,
CrsCod == Messages->FilterCrsCod,false,
"%s",row[1]); // Course short name
}
HTM_SELECT_End ();
HTM_LABEL_End ();
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
/*****************************************************************************/

View File

@ -59,17 +59,17 @@ typedef enum
Msg_STATUS_NOTIFIED,
} Msg_Status_t;
struct Msg_Course
{
long CrsCod;
char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1];
}; // Distinct courses in my messages sent or received
struct Msg_Messages
{
Msg_TypeOfMessages_t TypeOfMessages;
unsigned NumMsgs;
char Subject[Cns_MAX_BYTES_SUBJECT + 1];
unsigned NumCourses;
struct
{
long CrsCod;
char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1];
} Courses[Crs_MAX_COURSES_PER_USR]; // Distinct courses in my messages sent or received
long FilterCrsCod; // Show only messages sent from this course code
char FilterCrsShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1];
char FilterFromTo[Usr_MAX_BYTES_FULL_NAME + 1]; // Show only messages from/to these users