mirror of https://github.com/acanas/swad-core.git
Version 15.129
This commit is contained in:
parent
0c115d88ec
commit
12d47161e3
|
@ -117,17 +117,21 @@
|
|||
// TODO: Go to forum post (or at least to forum thread) from social timeline and notifications?
|
||||
// TODO: Width of column for data in notifications is too short
|
||||
|
||||
// TODO: Remove timeline notifications when clicking on "Show new activity" or "Show more"
|
||||
// TODO: Do not show top message for original publishings
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.128.5 (2016-01-25)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.129 (2016-01-25)"
|
||||
#define CSS_FILE "swad15.121.7.css"
|
||||
#define JS_FILE "swad15.121.7.js"
|
||||
|
||||
// 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
|
||||
/*
|
||||
Version 15.129: Jan 25, 2016 Do not notify new social sharings or comments. (194979 lines)
|
||||
Version 15.128.5: Jan 25, 2016 Fixed bug and code optimization when sharing a social note. (194958 lines)
|
||||
Version 15.128.4: Jan 25, 2016 Fixed bug when removing a social note. (194961 lines)
|
||||
Version 15.128.3: Jan 25, 2016 Optimization in top message of social note. (194969 lines)
|
||||
|
|
|
@ -1235,7 +1235,7 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
|
|||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
break;
|
||||
case Ntf_EVENT_TIMELINE_PUBLISH: // New social publishing from one of the users I follow
|
||||
case Ntf_EVENT_TIMELINE_PUBLISH: // New social publishing (original, no comment or sharing) from one of the users I follow
|
||||
// Cod is the code of the social publishing (not used in the following query)
|
||||
// Get all my followers
|
||||
sprintf (Query,"SELECT FollowerCod FROM usr_follow"
|
||||
|
|
|
@ -64,16 +64,16 @@ typedef enum
|
|||
Ntf_EVENT_TIMELINE_FAV = 11, // New fav of one of my social publishings (notes or comments)
|
||||
Ntf_EVENT_TIMELINE_SHARE = 12, // New sharing of one of my social notes
|
||||
Ntf_EVENT_TIMELINE_MENTION = 13, // New mention (reserved for future use)
|
||||
Ntf_EVENT_FOLLOWER = 14, // Old 14
|
||||
Ntf_EVENT_FORUM_POST_COURSE = 15, // Old 10 // New post in forums of my courses
|
||||
Ntf_EVENT_FORUM_REPLY = 16, // Old 11 // New reply to one of my posts in any forum
|
||||
Ntf_EVENT_FOLLOWER = 14,
|
||||
Ntf_EVENT_FORUM_POST_COURSE = 15, // New post in forums of my courses
|
||||
Ntf_EVENT_FORUM_REPLY = 16, // New reply to one of my posts in any forum
|
||||
|
||||
/* Messages tab */
|
||||
Ntf_EVENT_NOTICE = 17, // Old 9
|
||||
Ntf_EVENT_MESSAGE = 18, // Old 12
|
||||
Ntf_EVENT_NOTICE = 17,
|
||||
Ntf_EVENT_MESSAGE = 18,
|
||||
|
||||
/* Statistics tab */
|
||||
Ntf_EVENT_SURVEY = 19, // Old 13
|
||||
Ntf_EVENT_SURVEY = 19,
|
||||
|
||||
/* Profile tab */
|
||||
|
||||
|
|
132
swad_social.c
132
swad_social.c
|
@ -209,6 +209,8 @@ static long Soc_UnfavSocialComment (void);
|
|||
static void Soc_RequestRemovalSocialNote (void);
|
||||
static void Soc_RemoveSocialNote (void);
|
||||
static void Soc_RemoveASocialNoteFromDB (struct SocialNote *SocNot);
|
||||
|
||||
static long Soc_GetNotCodOfSocialPublishing (long PubCod);
|
||||
static long Soc_GetPubCodOfOriginalSocialNote (long NotCod);
|
||||
|
||||
static void Soc_RequestRemovalSocialComment (void);
|
||||
|
@ -253,9 +255,6 @@ static void Str_AnalyzeTxtAndStoreNotifyEventToMentionedUsrs (long PubCod,const
|
|||
|
||||
void Soc_ShowTimelineGbl (void)
|
||||
{
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long PubCod;
|
||||
struct SocialNote SocNot;
|
||||
struct UsrData UsrDat;
|
||||
|
@ -306,20 +305,8 @@ void Soc_ShowTimelineGbl (void)
|
|||
// If > 0 ==> the social note is shown highlighted above the timeline
|
||||
PubCod = Soc_GetParamPubCod ();
|
||||
if (PubCod > 0)
|
||||
{
|
||||
/***** Get code of social note from database *****/
|
||||
sprintf (Query,"SELECT NotCod FROM social_pubs WHERE PubCod='%ld'",
|
||||
PubCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get code of social note") == 1) // Result should have a unique row
|
||||
{
|
||||
/* Get code of social note */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
SocNot.NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
SocNot.NotCod = Soc_GetNotCodOfSocialPublishing (PubCod);
|
||||
|
||||
if (SocNot.NotCod > 0)
|
||||
{
|
||||
|
@ -2770,9 +2757,6 @@ static long Soc_ReceiveComment (void)
|
|||
Content);
|
||||
DB_QueryINSERT (Query,"can not store comment content");
|
||||
|
||||
/***** Store notifications about the new publishing *****/
|
||||
Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TIMELINE_PUBLISH,SocPub.PubCod);
|
||||
|
||||
/***** Store notifications about the new comment *****/
|
||||
Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TIMELINE_COMMENT,SocPub.PubCod);
|
||||
|
||||
|
@ -2834,7 +2818,7 @@ static long Soc_ShareSocialNote (void)
|
|||
extern const char *Txt_The_original_post_no_longer_exists;
|
||||
struct SocialNote SocNot;
|
||||
struct SocialPublishing SocPub;
|
||||
long PubCod;
|
||||
long OriginalPubCod;
|
||||
|
||||
/***** Get data of social note *****/
|
||||
SocNot.NotCod = Soc_GetParamNotCod ();
|
||||
|
@ -2856,14 +2840,15 @@ static long Soc_ShareSocialNote (void)
|
|||
/* Update number of times this social note is shared */
|
||||
SocNot.NumShared = Soc_UpdateNumTimesANoteHasBeenShared (&SocNot);
|
||||
|
||||
/***** Store notifications about the new publishing *****/
|
||||
Ntf_StoreNotifyEventsToAllUsrs (Ntf_EVENT_TIMELINE_PUBLISH,SocPub.PubCod);
|
||||
|
||||
/**** Create notification about shared post
|
||||
for the author of the post ***/
|
||||
PubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (PubCod > 0)
|
||||
Soc_CreateNotifToAuthor (SocNot.UsrCod,PubCod,Ntf_EVENT_TIMELINE_SHARE);
|
||||
OriginalPubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
|
||||
sprintf (Gbl.Message,"OriginalPubCod = %ld",OriginalPubCod);
|
||||
Lay_ShowAlert (Lay_INFO,Gbl.Message);
|
||||
|
||||
if (OriginalPubCod > 0)
|
||||
Soc_CreateNotifToAuthor (SocNot.UsrCod,OriginalPubCod,Ntf_EVENT_TIMELINE_SHARE);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2915,7 +2900,7 @@ static long Soc_FavSocialNote (void)
|
|||
extern const char *Txt_The_original_post_no_longer_exists;
|
||||
char Query[256];
|
||||
struct SocialNote SocNot;
|
||||
long PubCod;
|
||||
long OriginalPubCod;
|
||||
|
||||
/***** Get data of social note *****/
|
||||
SocNot.NotCod = Soc_GetParamNotCod ();
|
||||
|
@ -2940,9 +2925,9 @@ static long Soc_FavSocialNote (void)
|
|||
|
||||
/**** Create notification about favourite post
|
||||
for the author of the post ***/
|
||||
PubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (PubCod > 0)
|
||||
Soc_CreateNotifToAuthor (SocNot.UsrCod,PubCod,Ntf_EVENT_TIMELINE_FAV);
|
||||
OriginalPubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (OriginalPubCod > 0)
|
||||
Soc_CreateNotifToAuthor (SocNot.UsrCod,OriginalPubCod,Ntf_EVENT_TIMELINE_FAV);
|
||||
|
||||
/***** Show the social note just favourited *****/
|
||||
Soc_WriteSocialNote (&SocNot,
|
||||
|
@ -3115,7 +3100,7 @@ static long Soc_UnshareSocialNote (void)
|
|||
extern const char *Txt_The_original_post_no_longer_exists;
|
||||
char Query[256];
|
||||
struct SocialNote SocNot;
|
||||
long PubCod;
|
||||
long OriginalPubCod;
|
||||
|
||||
/***** Get data of social note *****/
|
||||
SocNot.NotCod = Soc_GetParamNotCod ();
|
||||
|
@ -3143,9 +3128,9 @@ static long Soc_UnshareSocialNote (void)
|
|||
SocNot.NumShared = Soc_UpdateNumTimesANoteHasBeenShared (&SocNot);
|
||||
|
||||
/***** Mark possible notifications on this social note as removed *****/
|
||||
PubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (PubCod > 0)
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_SHARE,PubCod);
|
||||
OriginalPubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (OriginalPubCod > 0)
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_SHARE,OriginalPubCod);
|
||||
|
||||
/***** Show the social note corresponding
|
||||
to the publishing just unshared *****/
|
||||
|
@ -3203,7 +3188,7 @@ static long Soc_UnfavSocialNote (void)
|
|||
extern const char *Txt_The_original_post_no_longer_exists;
|
||||
struct SocialNote SocNot;
|
||||
char Query[256];
|
||||
long PubCod;
|
||||
long OriginalPubCod;
|
||||
|
||||
/***** Get data of social note *****/
|
||||
SocNot.NotCod = Soc_GetParamNotCod ();
|
||||
|
@ -3228,9 +3213,9 @@ static long Soc_UnfavSocialNote (void)
|
|||
SocNot.NumFavs = Soc_GetNumTimesANoteHasBeenFav (&SocNot);
|
||||
|
||||
/***** Mark possible notifications on this social note as removed *****/
|
||||
PubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (PubCod > 0)
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_FAV,PubCod);
|
||||
OriginalPubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot.NotCod);
|
||||
if (OriginalPubCod > 0)
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_FAV,OriginalPubCod);
|
||||
|
||||
/***** Show the social note just unfavourited *****/
|
||||
Soc_WriteSocialNote (&SocNot,
|
||||
|
@ -3474,20 +3459,32 @@ static void Soc_RemoveASocialNoteFromDB (struct SocialNote *SocNot)
|
|||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long PubCod;
|
||||
unsigned long NumPublishings;
|
||||
unsigned long NumPub;
|
||||
unsigned long NumComments;
|
||||
unsigned long NumCom;
|
||||
|
||||
/***** Mark possible notifications on the publishings
|
||||
of this social note as removed *****/
|
||||
/* Get publishings (original, shared or comments) of this social note */
|
||||
sprintf (Query,"SELECT PubCod FROM social_pubs WHERE NotCod='%ld'",
|
||||
SocNot->NotCod);
|
||||
NumPublishings = DB_QuerySELECT (Query,&mysql_res,"can not get social comments");
|
||||
/* Mark notifications of the original social note as removed */
|
||||
PubCod = Soc_GetPubCodOfOriginalSocialNote (SocNot->NotCod);
|
||||
if (PubCod > 0)
|
||||
{
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_PUBLISH,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_COMMENT,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_FAV ,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_SHARE ,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_MENTION,PubCod);
|
||||
}
|
||||
|
||||
/* For each publishing... */
|
||||
for (NumPub = 0;
|
||||
NumPub < NumPublishings;
|
||||
NumPub++)
|
||||
/* Get comments of this social note */
|
||||
sprintf (Query,"SELECT PubCod FROM social_pubs"
|
||||
" WHERE NotCod='%ld' AND PubType ='%u'",
|
||||
SocNot->NotCod,(unsigned) Soc_PUB_COMMENT_TO_NOTE);
|
||||
NumComments = DB_QuerySELECT (Query,&mysql_res,"can not get social comments");
|
||||
|
||||
/* For each comment... */
|
||||
for (NumCom = 0;
|
||||
NumCom < NumComments;
|
||||
NumCom++)
|
||||
{
|
||||
/* Get code of social comment **/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -3496,10 +3493,8 @@ static void Soc_RemoveASocialNoteFromDB (struct SocialNote *SocNot)
|
|||
/* Mark notifications as removed */
|
||||
if (PubCod > 0)
|
||||
{
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_PUBLISH,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_COMMENT,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_FAV ,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_SHARE ,PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_MENTION,PubCod);
|
||||
}
|
||||
}
|
||||
|
@ -3557,6 +3552,33 @@ static void Soc_RemoveASocialNoteFromDB (struct SocialNote *SocNot)
|
|||
Soc_ResetSocialNote (SocNot);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Get code of social note of a publishing *****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static long Soc_GetNotCodOfSocialPublishing (long PubCod)
|
||||
{
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long NotCod = -1L;
|
||||
|
||||
/***** Get code of social note from database *****/
|
||||
sprintf (Query,"SELECT NotCod FROM social_pubs WHERE PubCod='%ld'",
|
||||
PubCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get code of social note") == 1) // Result should have a unique row
|
||||
{
|
||||
/* Get code of social note */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return NotCod;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Get code of social publishing of the original note *************/
|
||||
/*****************************************************************************/
|
||||
|
@ -3566,6 +3588,7 @@ static long Soc_GetPubCodOfOriginalSocialNote (long NotCod)
|
|||
char Query[256];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
long OriginalPubCod = -1L;
|
||||
|
||||
/***** Get code of social publishing of the original note *****/
|
||||
sprintf (Query,"SELECT PubCod FROM social_pubs"
|
||||
|
@ -3575,9 +3598,13 @@ static long Soc_GetPubCodOfOriginalSocialNote (long NotCod)
|
|||
{
|
||||
/* Get code of social publishing (row[0]) */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
return Str_ConvertStrCodToLongCod (row[0]);
|
||||
OriginalPubCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
}
|
||||
return -1L;
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return OriginalPubCod;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -3728,7 +3755,6 @@ static void Soc_RemoveASocialCommentFromDB (struct SocialComment *SocCom)
|
|||
char Query[128];
|
||||
|
||||
/***** Mark possible notifications on this comment as removed *****/
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_PUBLISH,SocCom->PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_COMMENT,SocCom->PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_FAV ,SocCom->PubCod);
|
||||
Ntf_MarkNotifAsRemoved (Ntf_EVENT_TIMELINE_MENTION,SocCom->PubCod);
|
||||
|
|
Loading…
Reference in New Issue