Version 16.194

This commit is contained in:
Antonio Cañas Vargas 2017-04-28 03:11:08 +02:00
parent 796bd1c0e5
commit e172c52b55
2 changed files with 76 additions and 43 deletions

View File

@ -221,13 +221,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.193.8 (2017-04-28)" #define Log_PLATFORM_VERSION "SWAD 16.194 (2017-04-28)"
#define CSS_FILE "swad16.193.4.css" #define CSS_FILE "swad16.193.4.css"
#define JS_FILE "swad16.181.js" #define JS_FILE "swad16.181.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.194: Apr 28, 2017 Fixed bugs in filtering sent and received messages. (218332 lines)
Version 16.193.8: Apr 28, 2017 Changed dialog to remove messages. (218299 lines) Version 16.193.8: Apr 28, 2017 Changed dialog to remove messages. (218299 lines)
Version 16.193.7: Apr 27, 2017 Changed dialog to remove my account. (218328 lines) Version 16.193.7: Apr 27, 2017 Changed dialog to remove my account. (218328 lines)
Version 16.193.6: Apr 27, 2017 Changed dialog to remove user account. (218322 lines) Version 16.193.6: Apr 27, 2017 Changed dialog to remove user account. (218322 lines)

View File

@ -85,8 +85,10 @@ static void Msg_PutFormMsgUsrs (char Content[Cns_MAX_BYTES_LONG_TEXT + 1]);
static void Msg_ShowSentOrReceivedMessages (void); static void Msg_ShowSentOrReceivedMessages (void);
static unsigned long Msg_GetNumUsrsBannedByMe (void); static unsigned long Msg_GetNumUsrsBannedByMe (void);
static void Msg_PutLinkToViewBannedUsers(void); static void Msg_PutLinkToViewBannedUsers(void);
static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCod, static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char Query[Msg_MAX_BYTES_MESSAGES_QUERY + 1],
long FilterCrsCod,const char *FilterFromToSubquery); long UsrCod,
long FilterCrsCod,
const char *FilterFromToSubquery);
static char *Msg_WriteNumMsgs (unsigned NumUnreadMsgs); static char *Msg_WriteNumMsgs (unsigned NumUnreadMsgs);
@ -1053,7 +1055,7 @@ static void Msg_MakeFilterFromToSubquery (char FilterFromToSubquery[Msg_MAX_BYTE
{ {
Ptr = Gbl.Msg.FilterFromTo; Ptr = Gbl.Msg.FilterFromTo;
Str_Copy (FilterFromToSubquery, Str_Copy (FilterFromToSubquery,
" AND CONCAT(usr_data.FirstName,usr_data.Surname1,usr_data.Surname2) LIKE '", " AND CONCAT(usr_data.FirstName,' ',usr_data.Surname1,' ',usr_data.Surname2) LIKE '",
Msg_MAX_BYTES_MESSAGES_QUERY); Msg_MAX_BYTES_MESSAGES_QUERY);
while (*Ptr) while (*Ptr)
{ {
@ -1350,7 +1352,8 @@ static unsigned long Msg_DelSomeRecOrSntMsgsUsr (Msg_TypeOfMessages_t TypeOfMess
long MsgCod; long MsgCod;
/***** Get some of the messages received or sent by this user from database *****/ /***** Get some of the messages received or sent by this user from database *****/
Msg_ConstructQueryToSelectSentOrReceivedMsgs (Query,UsrCod,FilterCrsCod,FilterFromToSubquery); Msg_ConstructQueryToSelectSentOrReceivedMsgs (Query,UsrCod,
FilterCrsCod,FilterFromToSubquery);
NumMsgs = DB_QuerySELECT (Query,&mysql_res,"can not get list of messages"); NumMsgs = DB_QuerySELECT (Query,&mysql_res,"can not get list of messages");
/***** Delete each message *****/ /***** Delete each message *****/
@ -1737,9 +1740,9 @@ static void Msg_ShowSentOrReceivedMessages (void)
} }
/***** Get messages from database *****/ /***** Get messages from database *****/
Msg_ConstructQueryToSelectSentOrReceivedMsgs (Query,Gbl.Usrs.Me.UsrDat.UsrCod,Gbl.Msg.FilterCrsCod,FilterFromToSubquery); Msg_ConstructQueryToSelectSentOrReceivedMsgs (Query,Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Msg.FilterCrsCod,FilterFromToSubquery);
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get messages"); NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get messages");
Gbl.Msg.NumMsgs = (unsigned) NumRows; Gbl.Msg.NumMsgs = (unsigned) NumRows;
/***** Start frame with messages *****/ /***** Start frame with messages *****/
@ -1878,8 +1881,10 @@ static void Msg_PutLinkToViewBannedUsers(void)
/********* Generate a query to select messages received or sent **************/ /********* Generate a query to select messages received or sent **************/
/*****************************************************************************/ /*****************************************************************************/
static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCod, static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char Query[Msg_MAX_BYTES_MESSAGES_QUERY + 1],
long FilterCrsCod,const char *FilterFromToSubquery) long UsrCod,
long FilterCrsCod,
const char *FilterFromToSubquery)
{ {
char SubQuery[Msg_MAX_BYTES_MESSAGES_QUERY + 1]; char SubQuery[Msg_MAX_BYTES_MESSAGES_QUERY + 1];
char *PtrQuery; char *PtrQuery;
@ -1895,41 +1900,57 @@ static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCo
StrUnreadMsg = (Gbl.Msg.ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" : StrUnreadMsg = (Gbl.Msg.ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" :
""); "");
if (FilterFromToSubquery[0]) if (FilterFromToSubquery[0])
sprintf (PtrQuery,"SELECT msg_rcv.MsgCod" sprintf (PtrQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt,usr_data" " FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s" " WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod" " AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld" " AND msg_snt.CrsCod=%ld"
" AND msg_snt.UsrCod=usr_data.UsrCod%s" " AND msg_snt.UsrCod=usr_data.UsrCod%s)"
" ORDER BY msg_rcv.MsgCod DESC", " UNION "
UsrCod,StrUnreadMsg,FilterCrsCod, "(SELECT msg_rcv.MsgCod"
FilterFromToSubquery); " FROM msg_rcv,msg_snt_deleted,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt_deleted.MsgCod"
" AND msg_snt_deleted.CrsCod=%ld"
" AND msg_snt_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,StrUnreadMsg,FilterCrsCod,FilterFromToSubquery,
UsrCod,StrUnreadMsg,FilterCrsCod,FilterFromToSubquery);
else else
sprintf (PtrQuery,"SELECT msg_rcv.MsgCod" sprintf (PtrQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt" " FROM msg_rcv,msg_snt"
" WHERE msg_rcv.UsrCod=%ld%s" " WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod" " AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld" " AND msg_snt.CrsCod=%ld)"
" ORDER BY msg_rcv.MsgCod DESC", " UNION "
UsrCod,StrUnreadMsg, "(SELECT msg_rcv.MsgCod"
FilterCrsCod); " FROM msg_rcv,msg_snt_deleted"
" WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt_deleted.MsgCod"
" AND msg_snt_deleted.CrsCod=%ld)",
UsrCod,StrUnreadMsg,FilterCrsCod,
UsrCod,StrUnreadMsg,FilterCrsCod);
break; break;
case Msg_MESSAGES_SENT: case Msg_MESSAGES_SENT:
if (FilterFromToSubquery[0]) if (FilterFromToSubquery[0])
sprintf (PtrQuery,"SELECT DISTINCT msg_snt.MsgCod" sprintf (PtrQuery,"(SELECT DISTINCT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv,usr_data" " FROM msg_snt,msg_rcv,usr_data"
" WHERE msg_snt.UsrCod=%ld" " WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.CrsCod=%ld" " AND msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=msg_rcv.MsgCod" " AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.UsrCod=usr_data.UsrCod%s" " AND msg_rcv.UsrCod=usr_data.UsrCod%s)"
" ORDER BY msg_snt.MsgCod DESC", " UNION "
UsrCod,FilterCrsCod, "(SELECT DISTINCT msg_snt.MsgCod"
FilterFromToSubquery); " FROM msg_snt,msg_rcv_deleted,usr_data"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,FilterCrsCod,FilterFromToSubquery,
UsrCod,FilterCrsCod,FilterFromToSubquery);
else else
sprintf (PtrQuery,"SELECT MsgCod" sprintf (PtrQuery,"SELECT MsgCod"
" FROM msg_snt" " FROM msg_snt"
" WHERE UsrCod=%ld AND CrsCod=%ld" " WHERE UsrCod=%ld AND CrsCod=%ld",
" ORDER BY MsgCod DESC",
UsrCod,FilterCrsCod); UsrCod,FilterCrsCod);
break; break;
default: // Not aplicable here default: // Not aplicable here
@ -1943,14 +1964,19 @@ static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCo
{ {
StrUnreadMsg = (Gbl.Msg.ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" : StrUnreadMsg = (Gbl.Msg.ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" :
""); "");
sprintf (PtrQuery,"SELECT msg_rcv.MsgCod" sprintf (PtrQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt,usr_data" " FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s" " WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod" " AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.UsrCod=usr_data.UsrCod%s" " AND msg_snt.UsrCod=usr_data.UsrCod%s)"
" ORDER BY msg_rcv.MsgCod DESC", " UNION "
UsrCod,StrUnreadMsg, "(SELECT msg_rcv.MsgCod"
FilterFromToSubquery); " FROM msg_rcv,msg_snt_deleted,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt_deleted.MsgCod"
" AND msg_snt_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,StrUnreadMsg,FilterFromToSubquery,
UsrCod,StrUnreadMsg,FilterFromToSubquery);
} }
else else
{ {
@ -1958,26 +1984,29 @@ static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCo
""); "");
sprintf (PtrQuery,"SELECT MsgCod" sprintf (PtrQuery,"SELECT MsgCod"
" FROM msg_rcv" " FROM msg_rcv"
" WHERE UsrCod=%ld%s" " WHERE UsrCod=%ld%s",
" ORDER BY MsgCod DESC",
UsrCod,StrUnreadMsg); UsrCod,StrUnreadMsg);
} }
break; break;
case Msg_MESSAGES_SENT: case Msg_MESSAGES_SENT:
if (FilterFromToSubquery[0]) if (FilterFromToSubquery[0])
sprintf (PtrQuery,"SELECT DISTINCT msg_snt.MsgCod" sprintf (PtrQuery,"(SELECT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv,usr_data" " FROM msg_snt,msg_rcv,usr_data"
" WHERE msg_snt.UsrCod=%ld" " WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.MsgCod=msg_rcv.MsgCod" " AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.UsrCod=usr_data.UsrCod%s" " AND msg_rcv.UsrCod=usr_data.UsrCod%s)"
" ORDER BY msg_snt.MsgCod DESC", " UNION "
UsrCod, "(SELECT msg_snt.MsgCod"
FilterFromToSubquery); " FROM msg_snt,msg_rcv_deleted,usr_data"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.MsgCod=msg_rcv_deleted.MsgCod"
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,FilterFromToSubquery,
UsrCod,FilterFromToSubquery);
else else
sprintf (PtrQuery,"SELECT MsgCod" sprintf (PtrQuery,"SELECT MsgCod"
" FROM msg_snt" " FROM msg_snt"
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld",
" ORDER BY MsgCod DESC",
UsrCod); UsrCod);
break; break;
default: // Not aplicable here default: // Not aplicable here
@ -1985,12 +2014,15 @@ static void Msg_ConstructQueryToSelectSentOrReceivedMsgs (char *Query,long UsrCo
} }
if (Gbl.Msg.FilterContent[0]) if (Gbl.Msg.FilterContent[0])
/* Match against the content written in filter form */
sprintf (Query,"SELECT MsgCod" sprintf (Query,"SELECT MsgCod"
" FROM msg_content" " FROM msg_content"
" WHERE MsgCod IN (%s)" " WHERE MsgCod IN (SELECT MsgCod FROM (%s) AS M)"
" AND MATCH (Subject,Content) AGAINST ('%s')", " AND MATCH (Subject,Content) AGAINST ('%s')",
SubQuery, SubQuery,Gbl.Msg.FilterContent);
Gbl.Msg.FilterContent);
/* End the query ordering the result from most recent message to oldest */
Str_Concat (Query," ORDER BY MsgCod DESC",Msg_MAX_BYTES_MESSAGES_QUERY);
} }
/*****************************************************************************/ /*****************************************************************************/