mirror of https://github.com/acanas/swad-core.git
Version 21.17.3: Sep 29, 2021 Queries moved to module swad_message_database.
This commit is contained in:
parent
f9b99de2bb
commit
b48901d204
|
@ -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.17.2 (2021-09-27)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 21.17.3 (2021-09-29)"
|
||||
#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.17.3: Sep 29, 2021 Queries moved to module swad_message_database. (317431 lines)
|
||||
Version 21.17.2: Sep 27, 2021 Queries moved to module swad_message_database. (317358 lines)
|
||||
Version 21.17.1: Sep 27, 2021 Queries moved to module swad_message_database. (317325 lines)
|
||||
Version 21.17: Sep 27, 2021 New module swad_message_database for database queries related to messages. (317295 lines)
|
||||
|
|
191
swad_message.c
191
swad_message.c
|
@ -140,14 +140,15 @@ static unsigned long Msg_RemoveSomeRecOrSntMsgsUsr (const struct Msg_Messages *M
|
|||
static void Msg_MoveRcvMsgToDeleted (long MsgCod,long UsrCod);
|
||||
static void Msg_MoveSntMsgToDeleted (long MsgCod);
|
||||
static void Msg_MoveMsgContentToDeleted (long MsgCod);
|
||||
static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
|
||||
const char *FilterFromToSubquery);
|
||||
static unsigned Msg_DB_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
|
||||
const char *FilterFromToSubquery);
|
||||
|
||||
static void Msg_GetMsgSntData (long MsgCod,long *CrsCod,long *UsrCod,
|
||||
time_t *CreatTimeUTC,
|
||||
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
|
||||
bool *Deleted);
|
||||
static void Msg_GetMsgContent (long MsgCod,char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
|
||||
static void Msg_GetMsgContent (long MsgCod,
|
||||
char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
|
||||
struct Med_Media *Media);
|
||||
|
||||
static void Msg_WriteSentOrReceivedMsgSubject (struct Msg_Messages *Messages,
|
||||
|
@ -1398,8 +1399,8 @@ static void Msg_MoveMsgContentToDeleted (long MsgCod)
|
|||
/******** Get number of received messages that haven't been read by me *******/
|
||||
/*****************************************************************************/
|
||||
|
||||
static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
|
||||
const char *FilterFromToSubquery)
|
||||
static unsigned Msg_DB_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
|
||||
const char *FilterFromToSubquery)
|
||||
{
|
||||
char *SubQuery;
|
||||
unsigned NumMsgs;
|
||||
|
@ -1510,7 +1511,7 @@ void Msg_ShowRecMsgs (void)
|
|||
/***** Reset messages context *****/
|
||||
Msg_ResetMessages (&Messages);
|
||||
|
||||
if (Msg_DB_GetNumUsrsBannedByMe ())
|
||||
if (Msg_DB_GetNumUsrsBannedBy (Gbl.Usrs.Me.UsrDat.UsrCod))
|
||||
{
|
||||
/***** Contextual menu *****/
|
||||
Mnu_ContextMenuBegin ();
|
||||
|
@ -1584,7 +1585,7 @@ static void Msg_ShowSntOrRcvMessages (struct Msg_Messages *Messages)
|
|||
{
|
||||
case Msg_RECEIVED:
|
||||
Messages->ShowOnlyUnreadMsgs = Msg_GetParamOnlyUnreadMsgs ();
|
||||
NumUnreadMsgs = Msg_GetNumUnreadMsgs (Messages,
|
||||
NumUnreadMsgs = Msg_DB_GetNumUnreadMsgs (Messages,
|
||||
FilterFromToSubquery);
|
||||
break;
|
||||
case Msg_SENT:
|
||||
|
@ -1920,30 +1921,10 @@ static void Msg_GetDistinctCoursesInMyMessages (struct Msg_Messages *Messages)
|
|||
switch (Messages->TypeOfMessages)
|
||||
{
|
||||
case Msg_RECEIVED:
|
||||
NumCrss = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get distinct courses in your messages",
|
||||
"SELECT DISTINCT crs_courses.CrsCod," // row[0]
|
||||
"crs_courses.ShortName" // row[1]
|
||||
" FROM msg_rcv,"
|
||||
"msg_snt,"
|
||||
"crs_courses"
|
||||
" WHERE msg_rcv.UsrCod=%ld"
|
||||
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
|
||||
" AND msg_snt.CrsCod=crs_courses.CrsCod"
|
||||
" ORDER BY crs_courses.ShortName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
NumCrss = Msg_DB_GetDistinctCrssInMyRcvMsgs (&mysql_res);
|
||||
break;
|
||||
case Msg_SENT:
|
||||
NumCrss = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get distinct courses in your messages",
|
||||
"SELECT DISTINCT crs_courses.CrsCod," // row[0]
|
||||
"crs_courses.ShortName" // row[1]
|
||||
" FROM msg_snt,"
|
||||
"crs_courses"
|
||||
" WHERE msg_snt.UsrCod=%ld"
|
||||
" AND msg_snt.CrsCod=crs_courses.CrsCod"
|
||||
" ORDER BY crs_courses.ShortName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
NumCrss = Msg_DB_GetDistinctCrssInMySntMsgs (&mysql_res);
|
||||
break;
|
||||
default: // Not aplicable here
|
||||
break;
|
||||
|
@ -2098,36 +2079,10 @@ static void Msg_GetMsgSntData (long MsgCod,long *CrsCod,long *UsrCod,
|
|||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRows;
|
||||
|
||||
/***** Get data of message from table msg_snt *****/
|
||||
*Deleted = false;
|
||||
NumRows = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get data of a message",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"UsrCod," // row[1]
|
||||
"UNIX_TIMESTAMP(CreatTime)" // row[2]
|
||||
" FROM msg_snt"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod);
|
||||
|
||||
if (NumRows == 0) // If not result ==> sent message is deleted
|
||||
{
|
||||
/***** Get data of message from table msg_snt_deleted *****/
|
||||
NumRows = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get data of a message",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"UsrCod," // row[1]
|
||||
"UNIX_TIMESTAMP(CreatTime)" // row[2]
|
||||
" FROM msg_snt_deleted"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod);
|
||||
|
||||
*Deleted = true;
|
||||
}
|
||||
|
||||
/* Result should have a unique row */
|
||||
if (NumRows != 1)
|
||||
if (Msg_DB_GetMsgSntData (&mysql_res,MsgCod,Deleted) != 1)
|
||||
Err_WrongMessageExit ();
|
||||
|
||||
/* Get number of rows */
|
||||
|
@ -2153,19 +2108,15 @@ static void Msg_GetMsgSntData (long MsgCod,long *CrsCod,long *UsrCod,
|
|||
/*************** Get content and optional image of a message *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Msg_GetMsgContent (long MsgCod,char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
|
||||
static void Msg_GetMsgContent (long MsgCod,
|
||||
char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
|
||||
struct Med_Media *Media)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
||||
/***** Get content of message from database *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get the content of a message",
|
||||
"SELECT Content," // row[0]
|
||||
"MedCod" // row[1]
|
||||
" FROM msg_content"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod) != 1)
|
||||
if (Msg_DB_GetMsgContent (&mysql_res,MsgCod) != 1)
|
||||
Err_WrongMessageExit ();
|
||||
|
||||
/***** Get number of rows *****/
|
||||
|
@ -2382,13 +2333,7 @@ void Msg_GetNotifMessage (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|||
SummaryStr[0] = '\0'; // Return nothing on error
|
||||
|
||||
/***** Get subject of message from database *****/
|
||||
if (DB_QuerySELECT (&mysql_res,"can not get subject and content"
|
||||
" of a message",
|
||||
"SELECT Subject," // row[0]
|
||||
"Content" // row[1]
|
||||
" FROM msg_content"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod) == 1) // Result should have a unique row
|
||||
if (Msg_DB_GetSubjectAndContent (&mysql_res,MsgCod) == 1) // Result should have a unique row
|
||||
{
|
||||
/***** Get subject and content of the message *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -2445,13 +2390,13 @@ static void Msg_WriteSentOrReceivedMsgSubject (struct Msg_Messages *Messages,
|
|||
|
||||
/***** Begin cell *****/
|
||||
HTM_TD_Begin ("class=\"%s LT\"",Open ? "MSG_TIT_BG" :
|
||||
"MSG_TIT_BG_NEW");
|
||||
"MSG_TIT_BG_NEW");
|
||||
|
||||
/***** Begin form to expand/contract the message *****/
|
||||
Frm_BeginForm (Messages->TypeOfMessages == Msg_RECEIVED ? (Expanded ? ActConRcvMsg :
|
||||
ActExpRcvMsg) :
|
||||
(Expanded ? ActConSntMsg :
|
||||
ActExpSntMsg));
|
||||
ActExpRcvMsg) :
|
||||
(Expanded ? ActConSntMsg :
|
||||
ActExpSntMsg));
|
||||
Messages->MsgCod = MsgCod; // Message to be contracted/expanded
|
||||
Msg_PutHiddenParamsOneMsg (Messages);
|
||||
|
||||
|
@ -2706,10 +2651,13 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumRcp;
|
||||
unsigned NumRecipientsTotal;
|
||||
unsigned NumRecipientsKnown;
|
||||
unsigned NumRecipientsUnknown;
|
||||
unsigned NumRecipientsToShow;
|
||||
struct
|
||||
{
|
||||
unsigned Total;
|
||||
unsigned Known;
|
||||
unsigned Unknown;
|
||||
unsigned ToShow;
|
||||
} NumRecipients;
|
||||
struct UsrData UsrDat;
|
||||
bool Deleted;
|
||||
bool OpenByDst;
|
||||
|
@ -2725,69 +2673,31 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
};
|
||||
|
||||
/***** Get number of recipients of a message from database *****/
|
||||
NumRecipientsTotal = (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of recipients",
|
||||
"SELECT "
|
||||
"(SELECT COUNT(*)"
|
||||
" FROM msg_rcv"
|
||||
" WHERE MsgCod=%ld)"
|
||||
" + "
|
||||
"(SELECT COUNT(*)"
|
||||
" FROM msg_rcv_deleted"
|
||||
" WHERE MsgCod=%ld)",
|
||||
MsgCod,
|
||||
MsgCod);
|
||||
NumRecipients.Total = Msg_DB_GetNumRecipients (MsgCod);
|
||||
|
||||
/***** Get recipients of a message from database *****/
|
||||
NumRecipientsKnown = (unsigned)
|
||||
DB_QuerySELECT (&mysql_res,"can not get recipients of a message",
|
||||
"(SELECT msg_rcv.UsrCod," // row[0]
|
||||
"'N'," // row[1]
|
||||
"msg_rcv.Open," // row[2]
|
||||
"usr_data.Surname1 AS S1," // row[3]
|
||||
"usr_data.Surname2 AS S2," // row[4]
|
||||
"usr_data.FirstName AS FN" // row[5]
|
||||
" FROM msg_rcv,"
|
||||
"usr_data"
|
||||
" WHERE msg_rcv.MsgCod=%ld"
|
||||
" AND msg_rcv.UsrCod=usr_data.UsrCod)"
|
||||
" UNION "
|
||||
"(SELECT msg_rcv_deleted.UsrCod," // row[0]
|
||||
"'Y'," // row[1]
|
||||
"msg_rcv_deleted.Open," // row[2]
|
||||
"usr_data.Surname1 AS S1," // row[3]
|
||||
"usr_data.Surname2 AS S2," // row[4]
|
||||
"usr_data.FirstName AS FN" // row[5]
|
||||
" FROM msg_rcv_deleted,"
|
||||
"usr_data"
|
||||
" WHERE msg_rcv_deleted.MsgCod=%ld"
|
||||
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod)"
|
||||
" ORDER BY S1,"
|
||||
"S2,"
|
||||
"FN",
|
||||
MsgCod,
|
||||
MsgCod);
|
||||
NumRecipients.Known = Msg_DB_GetKnownRecipients (&mysql_res,MsgCod);
|
||||
|
||||
/***** Check number of recipients *****/
|
||||
if (NumRecipientsTotal)
|
||||
if (NumRecipients.Total)
|
||||
{
|
||||
/***** Begin table *****/
|
||||
HTM_TABLE_Begin (NULL);
|
||||
|
||||
/***** How many recipients will be shown? *****/
|
||||
if (NumRecipientsKnown <= Msg_MAX_RECIPIENTS_TO_SHOW)
|
||||
NumRecipientsToShow = NumRecipientsKnown;
|
||||
if (NumRecipients.Known <= Msg_MAX_RECIPIENTS_TO_SHOW)
|
||||
NumRecipients.ToShow = NumRecipients.Known;
|
||||
else // A lot of recipients
|
||||
/***** Get parameter that indicates if I want to see all recipients *****/
|
||||
NumRecipientsToShow = Par_GetParToBool ("SeeAllRcpts") ? NumRecipientsKnown :
|
||||
Msg_DEF_RECIPIENTS_TO_SHOW;
|
||||
NumRecipients.ToShow = Par_GetParToBool ("SeeAllRcpts") ? NumRecipients.Known :
|
||||
Msg_DEF_RECIPIENTS_TO_SHOW;
|
||||
|
||||
/***** Initialize structure with user's data *****/
|
||||
Usr_UsrDataConstructor (&UsrDat);
|
||||
|
||||
/***** Write known recipients *****/
|
||||
for (NumRcp = 0;
|
||||
NumRcp < NumRecipientsToShow;
|
||||
NumRcp < NumRecipients.ToShow;
|
||||
NumRcp++)
|
||||
{
|
||||
/* Get user's code */
|
||||
|
@ -2831,7 +2741,7 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
|
||||
/* Write user's name */
|
||||
HTM_TD_Begin ("class=\"%s LM\"",OpenByDst ? "AUTHOR_TXT" :
|
||||
"AUTHOR_TXT_NEW");
|
||||
"AUTHOR_TXT_NEW");
|
||||
if (UsrValid)
|
||||
HTM_Txt (UsrDat.FullName);
|
||||
else
|
||||
|
@ -2842,23 +2752,23 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
}
|
||||
|
||||
/***** If any recipients are unknown *****/
|
||||
if ((NumRecipientsUnknown = NumRecipientsTotal - NumRecipientsKnown))
|
||||
if ((NumRecipients.Unknown = NumRecipients.Total - NumRecipients.Known))
|
||||
{
|
||||
/***** Begin form to show all the users *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("colspan=\"3\" class=\"AUTHOR_TXT LM\"");
|
||||
HTM_TxtF ("[%u %s]",
|
||||
NumRecipientsUnknown,
|
||||
(NumRecipientsUnknown == 1) ? Txt_unknown_recipient :
|
||||
Txt_unknown_recipients);
|
||||
NumRecipients.Unknown,
|
||||
(NumRecipients.Unknown == 1) ? Txt_unknown_recipient :
|
||||
Txt_unknown_recipients);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
}
|
||||
|
||||
/***** If any known recipient is not listed *****/
|
||||
if (NumRecipientsToShow < NumRecipientsKnown)
|
||||
if (NumRecipients.ToShow < NumRecipients.Known)
|
||||
{
|
||||
/***** Begin form to show all the users *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
@ -2870,7 +2780,7 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
|
|||
Par_PutHiddenParamChar ("SeeAllRcpts",'Y');
|
||||
HTM_BUTTON_SUBMIT_Begin (Txt_View_all_recipients,"BT_LINK AUTHOR_TXT",NULL);
|
||||
HTM_TxtF (Txt_and_X_other_recipients,
|
||||
NumRecipientsKnown - NumRecipientsToShow);
|
||||
NumRecipients.Known - NumRecipients.ToShow);
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
@ -3008,13 +2918,8 @@ void Msg_BanSenderWhenShowingMsgs (void)
|
|||
Err_WrongUserExit ();
|
||||
|
||||
/***** Insert pair (sender's code - my code) in table of banned senders if not inserted *****/
|
||||
DB_QueryREPLACE ("can not ban sender",
|
||||
"REPLACE INTO msg_banned"
|
||||
" (FromUsrCod,ToUsrCod)"
|
||||
" VALUES"
|
||||
" (%ld,%ld)",
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
Msg_DB_CreateUsrsPairIntoBanned (Gbl.Usrs.Other.UsrDat.UsrCod, // From
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod); // To
|
||||
|
||||
/***** Show alert with the change made *****/
|
||||
Ale_ShowAlert (Ale_SUCCESS,Txt_From_this_time_you_will_not_receive_messages_from_X,
|
||||
|
@ -3068,12 +2973,8 @@ static void Msg_UnbanSender (void)
|
|||
Err_WrongUserExit ();
|
||||
|
||||
/***** Remove pair (sender's code - my code) from table of banned senders *****/
|
||||
DB_QueryDELETE ("can not ban sender",
|
||||
"DELETE FROM msg_banned"
|
||||
" WHERE FromUsrCod=%ld"
|
||||
" AND ToUsrCod=%ld",
|
||||
Gbl.Usrs.Other.UsrDat.UsrCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
Msg_DB_RemoveUsrsPairFromBanned (Gbl.Usrs.Other.UsrDat.UsrCod, // From
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod); // To
|
||||
|
||||
/***** Show alert with the change made *****/
|
||||
Ale_ShowAlert (Ale_SUCCESS,Txt_From_this_time_you_can_receive_messages_from_X,
|
||||
|
@ -3095,7 +2996,7 @@ void Msg_ListBannedUsrs (void)
|
|||
struct UsrData UsrDat;
|
||||
|
||||
/***** Get users banned by me *****/
|
||||
if ((NumUsrs = Msg_DB_GetUsrsBannedByMe (&mysql_res)))
|
||||
if ((NumUsrs = Msg_DB_GetUsrsBannedBy (&mysql_res,Gbl.Usrs.Me.UsrDat.UsrCod)))
|
||||
{
|
||||
/***** Initialize structure with user's data *****/
|
||||
Usr_UsrDataConstructor (&UsrDat);
|
||||
|
|
|
@ -279,6 +279,44 @@ void Msg_DB_MoveSntMsgToDeleted (long MsgCod)
|
|||
MsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get dictinct courses in my received messages ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetDistinctCrssInMyRcvMsgs (MYSQL_RES **mysql_res)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get distinct courses in your messages",
|
||||
"SELECT DISTINCT crs_courses.CrsCod," // row[0]
|
||||
"crs_courses.ShortName" // row[1]
|
||||
" FROM msg_rcv,"
|
||||
"msg_snt,"
|
||||
"crs_courses"
|
||||
" WHERE msg_rcv.UsrCod=%ld"
|
||||
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
|
||||
" AND msg_snt.CrsCod=crs_courses.CrsCod"
|
||||
" ORDER BY crs_courses.ShortName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Get dictinct courses in my sent messages ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetDistinctCrssInMySntMsgs (MYSQL_RES **mysql_res)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get distinct courses in your messages",
|
||||
"SELECT DISTINCT crs_courses.CrsCod," // row[0]
|
||||
"crs_courses.ShortName" // row[1]
|
||||
" FROM msg_snt,"
|
||||
"crs_courses"
|
||||
" WHERE msg_snt.UsrCod=%ld"
|
||||
" AND msg_snt.CrsCod=crs_courses.CrsCod"
|
||||
" ORDER BY crs_courses.ShortName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Make "from"/"to" subquery *************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -548,6 +586,58 @@ void Msg_DB_GetMsgSubject (long MsgCod,char Subject[Cns_MAX_BYTES_SUBJECT + 1])
|
|||
MsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get content and optional image of a message *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetMsgContent (MYSQL_RES **mysql_res,long MsgCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get the content of a message",
|
||||
"SELECT Content," // row[0]
|
||||
"MedCod" // row[1]
|
||||
" FROM msg_content"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Get data of a message *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetMsgSntData (MYSQL_RES **mysql_res,long MsgCod,bool *Deleted)
|
||||
{
|
||||
unsigned NumRows;
|
||||
|
||||
/***** Get data of message from table msg_snt *****/
|
||||
*Deleted = false;
|
||||
NumRows = (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get data of a message",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"UsrCod," // row[1]
|
||||
"UNIX_TIMESTAMP(CreatTime)" // row[2]
|
||||
" FROM msg_snt"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod);
|
||||
|
||||
if (NumRows == 0) // If not result ==> sent message is deleted
|
||||
{
|
||||
/***** Get data of message from table msg_snt_deleted *****/
|
||||
NumRows = (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get data of a message",
|
||||
"SELECT CrsCod," // row[0]
|
||||
"UsrCod," // row[1]
|
||||
"UNIX_TIMESTAMP(CreatTime)" // row[2]
|
||||
" FROM msg_snt_deleted"
|
||||
" WHERE MsgCod=%ld",
|
||||
MsgCod);
|
||||
|
||||
*Deleted = true;
|
||||
}
|
||||
|
||||
return NumRows;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Get if a sent message is expanded ********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -638,6 +728,62 @@ bool Msg_DB_CheckIfRcvMsgIsDeletedForAllItsRecipients (long MsgCod)
|
|||
// in table of received messages undeleted
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Get number of recipients of a message from database ************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetNumRecipients (long MsgCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of recipients",
|
||||
"SELECT "
|
||||
"(SELECT COUNT(*)"
|
||||
" FROM msg_rcv"
|
||||
" WHERE MsgCod=%ld)"
|
||||
" + "
|
||||
"(SELECT COUNT(*)"
|
||||
" FROM msg_rcv_deleted"
|
||||
" WHERE MsgCod=%ld)",
|
||||
MsgCod,
|
||||
MsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get known recipients of a message from database *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetKnownRecipients (MYSQL_RES **mysql_res,long MsgCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get recipients of a message",
|
||||
"(SELECT msg_rcv.UsrCod," // row[0]
|
||||
"'N'," // row[1]
|
||||
"msg_rcv.Open," // row[2]
|
||||
"usr_data.Surname1 AS S1," // row[3]
|
||||
"usr_data.Surname2 AS S2," // row[4]
|
||||
"usr_data.FirstName AS FN" // row[5]
|
||||
" FROM msg_rcv,"
|
||||
"usr_data"
|
||||
" WHERE msg_rcv.MsgCod=%ld"
|
||||
" AND msg_rcv.UsrCod=usr_data.UsrCod)"
|
||||
" UNION "
|
||||
"(SELECT msg_rcv_deleted.UsrCod," // row[0]
|
||||
"'Y'," // row[1]
|
||||
"msg_rcv_deleted.Open," // row[2]
|
||||
"usr_data.Surname1 AS S1," // row[3]
|
||||
"usr_data.Surname2 AS S2," // row[4]
|
||||
"usr_data.FirstName AS FN" // row[5]
|
||||
" FROM msg_rcv_deleted,"
|
||||
"usr_data"
|
||||
" WHERE msg_rcv_deleted.MsgCod=%ld"
|
||||
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod)"
|
||||
" ORDER BY S1,"
|
||||
"S2,"
|
||||
"FN",
|
||||
MsgCod,
|
||||
MsgCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******** Get the number of unique messages sent from this location **********/
|
||||
/******** (all the platform, current degree or current course) **********/
|
||||
|
@ -1141,25 +1287,40 @@ void Msg_DB_MoveUnusedMsgsContentToDeleted (void)
|
|||
" FROM msg_rcv)");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***** Insert pair (sender's code - my code) in table of banned senders ******/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Msg_DB_CreateUsrsPairIntoBanned (long FromUsrCod,long ToUsrCod)
|
||||
{
|
||||
DB_QueryREPLACE ("can not ban sender",
|
||||
"REPLACE INTO msg_banned"
|
||||
" (FromUsrCod,ToUsrCod)"
|
||||
" VALUES"
|
||||
" (%ld,%ld)",
|
||||
FromUsrCod,
|
||||
ToUsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Get number of users I have banned **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetNumUsrsBannedByMe (void)
|
||||
unsigned Msg_DB_GetNumUsrsBannedBy (long UsrCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of users you have banned",
|
||||
DB_QueryCOUNT ("can not get number of users banned",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM msg_banned"
|
||||
" WHERE ToUsrCod=%ld",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Get users I have banned ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Msg_DB_GetUsrsBannedByMe (MYSQL_RES **mysql_res)
|
||||
unsigned Msg_DB_GetUsrsBannedBy (MYSQL_RES **mysql_res,long UsrCod)
|
||||
{
|
||||
return (unsigned)
|
||||
DB_QuerySELECT (mysql_res,"can not get banned users",
|
||||
|
@ -1171,7 +1332,7 @@ unsigned Msg_DB_GetUsrsBannedByMe (MYSQL_RES **mysql_res)
|
|||
" ORDER BY usr_data.Surname1,"
|
||||
"usr_data.Surname2,"
|
||||
"usr_data.FirstName",
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
UsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1190,7 +1351,21 @@ bool Msg_DB_CheckIfUsrIsBanned (long FromUsrCod,long ToUsrCod)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************ Remove user from banned table **********************/
|
||||
/**** Remove pair (sender's code - recipient's code) from table of banned ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Msg_DB_RemoveUsrsPairFromBanned (long FromUsrCod,long ToUsrCod)
|
||||
{
|
||||
DB_QueryDELETE ("can not unban sender",
|
||||
"DELETE FROM msg_banned"
|
||||
" WHERE FromUsrCod=%ld"
|
||||
" AND ToUsrCod=%ld",
|
||||
FromUsrCod,
|
||||
ToUsrCod);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Remove user from table of banned senders *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Msg_DB_RemoveUsrFromBanned (long UsrCod)
|
||||
|
@ -1199,5 +1374,6 @@ void Msg_DB_RemoveUsrFromBanned (long UsrCod)
|
|||
"DELETE FROM msg_banned"
|
||||
" WHERE FromUsrCod=%ld"
|
||||
" OR ToUsrCod=%ld",
|
||||
UsrCod,UsrCod);
|
||||
UsrCod,
|
||||
UsrCod);
|
||||
}
|
||||
|
|
|
@ -60,6 +60,8 @@ void Msg_DB_SetRcvMsgAsOpen (long MsgCod,long UsrCod);
|
|||
void Msg_DB_MoveRcvMsgToDeleted (long MsgCod,long UsrCod);
|
||||
void Msg_DB_MoveSntMsgToDeleted (long MsgCod);
|
||||
|
||||
unsigned Msg_DB_GetDistinctCrssInMyRcvMsgs (MYSQL_RES **mysql_res);
|
||||
unsigned Msg_DB_GetDistinctCrssInMySntMsgs (MYSQL_RES **mysql_res);
|
||||
void Msg_DB_MakeFilterFromToSubquery (const struct Msg_Messages *Messages,
|
||||
char FilterFromToSubquery[Msg_MAX_BYTES_MESSAGES_QUERY + 1]);
|
||||
unsigned Msg_DB_GetSntOrRcvMsgs (MYSQL_RES **mysql_res,
|
||||
|
@ -68,11 +70,15 @@ unsigned Msg_DB_GetSntOrRcvMsgs (MYSQL_RES **mysql_res,
|
|||
const char *FilterFromToSubquery);
|
||||
unsigned Msg_DB_GetSubjectAndContent (MYSQL_RES **mysql_res,long MsgCod);
|
||||
void Msg_DB_GetMsgSubject (long MsgCod,char Subject[Cns_MAX_BYTES_SUBJECT + 1]);
|
||||
unsigned Msg_DB_GetMsgContent (MYSQL_RES **mysql_res,long MsgCod);
|
||||
unsigned Msg_DB_GetMsgSntData (MYSQL_RES **mysql_res,long MsgCod,bool *Deleted);
|
||||
bool Msg_DB_GetStatusOfSntMsg (long MsgCod);
|
||||
void Msg_DB_GetStatusOfRcvMsg (long MsgCod,
|
||||
bool *Open,bool *Replied,bool *Expanded);
|
||||
bool Msg_DB_CheckIfSntMsgIsDeleted (long MsgCod);
|
||||
bool Msg_DB_CheckIfRcvMsgIsDeletedForAllItsRecipients (long MsgCod);
|
||||
unsigned Msg_DB_GetNumRecipients (long MsgCod);
|
||||
unsigned Msg_DB_GetKnownRecipients (MYSQL_RES **mysql_res,long MsgCod);
|
||||
unsigned Msg_DB_GetNumSntMsgs (HieLvl_Level_t Scope,Msg_Status_t MsgStatus);
|
||||
unsigned Msg_DB_GetNumRcvMsgs (HieLvl_Level_t Scope,Msg_Status_t MsgStatus);
|
||||
unsigned Msg_DB_GetNumMsgsSentByTchsCrs (long CrsCod);
|
||||
|
@ -84,10 +90,12 @@ void Msg_DB_RemoveAllRecAndSntMsgsUsr (long UsrCod);
|
|||
void Msg_DB_MoveUnusedMsgsContentToDeleted (void);
|
||||
|
||||
//--------------------------- Users banned ------------------------------------
|
||||
unsigned Msg_DB_GetNumUsrsBannedByMe (void);
|
||||
unsigned Msg_DB_GetUsrsBannedByMe (MYSQL_RES **mysql_res);
|
||||
void Msg_DB_CreateUsrsPairIntoBanned (long FromUsrCod,long ToUsrCod);
|
||||
unsigned Msg_DB_GetNumUsrsBannedBy (long UsrCod);
|
||||
unsigned Msg_DB_GetUsrsBannedBy (MYSQL_RES **mysql_res,long UsrCod);
|
||||
bool Msg_DB_CheckIfUsrIsBanned (long FromUsrCod,long ToUsrCod);
|
||||
|
||||
void Msg_DB_RemoveUsrsPairFromBanned (long FromUsrCod,long ToUsrCod);
|
||||
void Msg_DB_RemoveUsrFromBanned (long UsrCod);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10329,6 +10329,10 @@ void Usr_PutWhoIcon (Usr_Who_t Who)
|
|||
"ICO_HIGHLIGHT PHOTO15x20");
|
||||
break;
|
||||
case Usr_WHO_SELECTED:
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"search.svg",
|
||||
Txt_WHO[Who],
|
||||
"ICO_HIGHLIGHT ICOx20");
|
||||
break;
|
||||
case Usr_WHO_FOLLOWED:
|
||||
HTM_INPUT_IMAGE (Cfg_URL_ICON_PUBLIC,"user-check.svg",
|
||||
Txt_WHO[Who],
|
||||
|
|
Loading…
Reference in New Issue