mirror of https://github.com/acanas/swad-core.git
Version 15.84
This commit is contained in:
parent
84dd545bec
commit
866ae0e8ca
|
@ -393,7 +393,7 @@ static long Ann_GetParamAnnCod (void)
|
||||||
char LongStr[1+10+1]; // String that holds the announcement code
|
char LongStr[1+10+1]; // String that holds the announcement code
|
||||||
long AnnCod;
|
long AnnCod;
|
||||||
|
|
||||||
/* Get notice code */
|
/* Get announcement code */
|
||||||
Par_GetParToText ("AnnCod",LongStr,1+10);
|
Par_GetParToText ("AnnCod",LongStr,1+10);
|
||||||
if (sscanf (LongStr,"%ld",&AnnCod) != 1)
|
if (sscanf (LongStr,"%ld",&AnnCod) != 1)
|
||||||
Lay_ShowErrorAndExit ("Wrong code of announcement.");
|
Lay_ShowErrorAndExit ("Wrong code of announcement.");
|
||||||
|
|
|
@ -116,13 +116,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.83.1 (2015-12-30)"
|
#define Log_PLATFORM_VERSION "SWAD 15.84 (2015-12-30)"
|
||||||
#define CSS_FILE "swad15.80.css"
|
#define CSS_FILE "swad15.80.css"
|
||||||
#define JS_FILE "swad15.77.7.js"
|
#define JS_FILE "swad15.77.7.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 15.84: Dec 30, 2015 Remove social post. (189316 lines)
|
||||||
Version 15.83.1: Dec 30, 2015 Fixed bug in user's public profile. (189210 lines)
|
Version 15.83.1: Dec 30, 2015 Fixed bug in user's public profile. (189210 lines)
|
||||||
Version 15.83: Dec 30, 2015 Form to remove a social post. (189209 lines)
|
Version 15.83: Dec 30, 2015 Form to remove a social post. (189209 lines)
|
||||||
Version 15.82.4: Dec 30, 2015 Action to write a new social post is removed form menu. (189159 lines)
|
Version 15.82.4: Dec 30, 2015 Action to write a new social post is removed form menu. (189159 lines)
|
||||||
|
|
|
@ -715,10 +715,11 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
|
||||||
Usr_UsrDataConstructor (&UsrDat);
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
UsrDat.UsrCod = UsrCod;
|
UsrDat.UsrCod = UsrCod;
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get from the database the data of the autor
|
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Get from the database the data of the autor
|
||||||
Usr_RestrictLengthAndWriteName (&UsrDat,18);
|
Usr_RestrictLengthAndWriteName (&UsrDat,16);
|
||||||
Usr_UsrDataDestructor (&UsrDat);
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
/***** End yellow note *****/
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
363
swad_social.c
363
swad_social.c
|
@ -92,6 +92,20 @@ static const Act_Action_t Soc_DefaultActions[Soc_NUM_SOCIAL_EVENTS] =
|
||||||
/****************************** Internal types *******************************/
|
/****************************** Internal types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
struct SocialEvent
|
||||||
|
{
|
||||||
|
long SocCod;
|
||||||
|
Soc_SocialEvent_t SocialEvent;
|
||||||
|
long UsrCod;
|
||||||
|
long CtyCod;
|
||||||
|
long InsCod;
|
||||||
|
long CtrCod;
|
||||||
|
long DegCod;
|
||||||
|
long CrsCod;
|
||||||
|
long Cod;
|
||||||
|
time_t DateTimeUTC;
|
||||||
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** External global variables from others modules ****************/
|
/************** External global variables from others modules ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -106,9 +120,6 @@ extern struct Globals Gbl;
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Soc_PutLinkToWriteANewPost (void);
|
|
||||||
static void Soc_GetAndWriteSocialPost (long PstCod);
|
|
||||||
|
|
||||||
static unsigned long Soc_ShowTimeline (const char *Query);
|
static unsigned long Soc_ShowTimeline (const char *Query);
|
||||||
static Soc_SocialEvent_t Soc_GetSocialEventFromDB (const char *Str);
|
static Soc_SocialEvent_t Soc_GetSocialEventFromDB (const char *Str);
|
||||||
static void Soc_WriteEventDate (time_t TimeUTC);
|
static void Soc_WriteEventDate (time_t TimeUTC);
|
||||||
|
@ -117,119 +128,13 @@ static void Soc_StartFormGoToAction (Soc_SocialEvent_t SocialEvent,
|
||||||
static void Soc_GetEventSummary (Soc_SocialEvent_t SocialEvent,long Cod,
|
static void Soc_GetEventSummary (Soc_SocialEvent_t SocialEvent,long Cod,
|
||||||
char *SummaryStr,unsigned MaxChars);
|
char *SummaryStr,unsigned MaxChars);
|
||||||
|
|
||||||
|
static void Soc_PutLinkToWriteANewPost (void);
|
||||||
|
static void Soc_GetAndWriteSocialPost (long PstCod);
|
||||||
|
|
||||||
static void Soc_PutFormToRemoveSocialEvent (long SocCod);
|
static void Soc_PutFormToRemoveSocialEvent (long SocCod);
|
||||||
static void Soc_PutHiddenParamSocCod (long SocCod);
|
static void Soc_PutHiddenParamSocCod (long SocCod);
|
||||||
|
static long Soc_GetParamSocCod (void);
|
||||||
/*****************************************************************************/
|
static void Soc_GetDataOfSocialEventByCod (struct SocialEvent *Soc);
|
||||||
/*********************** Show social activity (timeline) *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Soc_PutLinkToWriteANewPost (void)
|
|
||||||
{
|
|
||||||
extern const char *Txt_New_comment;
|
|
||||||
|
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
|
||||||
Lay_PutContextualLink (ActReqSocPst,NULL,"write64x64.gif",
|
|
||||||
Txt_New_comment,Txt_New_comment);
|
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/****************** Form to write a new public comment ***********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Soc_FormSocialPost (void)
|
|
||||||
{
|
|
||||||
extern const char *Txt_New_comment;
|
|
||||||
extern const char *Txt_Send_comment;
|
|
||||||
|
|
||||||
/***** Form to write a new public comment *****/
|
|
||||||
/* Start frame */
|
|
||||||
Lay_StartRoundFrame ("560px",Txt_New_comment);
|
|
||||||
|
|
||||||
/* Start form to write the post */
|
|
||||||
Act_FormStart (ActRcvSocPst);
|
|
||||||
|
|
||||||
/* Content of new post */
|
|
||||||
fprintf (Gbl.F.Out,"<textarea name=\"Content\" cols=\"50\" rows=\"5\">"
|
|
||||||
"</textarea>");
|
|
||||||
|
|
||||||
/* Send button */
|
|
||||||
Lay_PutCreateButton (Txt_Send_comment);
|
|
||||||
|
|
||||||
/* End form */
|
|
||||||
Act_FormEnd ();
|
|
||||||
|
|
||||||
/* End frame */
|
|
||||||
Lay_EndRoundFrame ();
|
|
||||||
|
|
||||||
/***** Write current timeline *****/
|
|
||||||
Soc_ShowFollowingTimeline ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Receive and store a new public post *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Soc_ReceiveSocialPost (void)
|
|
||||||
{
|
|
||||||
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
|
|
||||||
char Query[128+Cns_MAX_BYTES_LONG_TEXT];
|
|
||||||
long PstCod;
|
|
||||||
|
|
||||||
/***** Get and store new post *****/
|
|
||||||
/* Get the content of the post */
|
|
||||||
Par_GetParAndChangeFormat ("Content",Content,Cns_MAX_BYTES_LONG_TEXT,
|
|
||||||
Str_TO_RIGOROUS_HTML,true);
|
|
||||||
|
|
||||||
/* Insert post content in the database */
|
|
||||||
sprintf (Query,"INSERT INTO social_post (Content) VALUES ('%s')",
|
|
||||||
Content);
|
|
||||||
PstCod = DB_QueryINSERTandReturnCode (Query,"can not create post");
|
|
||||||
|
|
||||||
/* Insert post in social events */
|
|
||||||
Soc_StoreSocialEvent (Soc_EVENT_SOCIAL_POST,PstCod);
|
|
||||||
|
|
||||||
/***** Write current timeline *****/
|
|
||||||
Soc_ShowFollowingTimeline ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/***************** Get from database and write public post *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Soc_GetAndWriteSocialPost (long PstCod)
|
|
||||||
{
|
|
||||||
char Query[128];
|
|
||||||
MYSQL_RES *mysql_res;
|
|
||||||
MYSQL_ROW row;
|
|
||||||
unsigned long NumRows;
|
|
||||||
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
|
|
||||||
|
|
||||||
/***** Get social post from database *****/
|
|
||||||
sprintf (Query,"SELECT Content FROM social_post WHERE PstCod='%ld'",
|
|
||||||
PstCod);
|
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the content of a social post");
|
|
||||||
|
|
||||||
/***** Result should have a unique row *****/
|
|
||||||
if (NumRows == 1)
|
|
||||||
{
|
|
||||||
/***** Get number of rows *****/
|
|
||||||
row = mysql_fetch_row (mysql_res);
|
|
||||||
|
|
||||||
/****** Get content (row[0]) *****/
|
|
||||||
strncpy (Content,row[0],Cns_MAX_BYTES_LONG_TEXT);
|
|
||||||
Content[Cns_MAX_BYTES_LONG_TEXT] = '\0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Content[0] = '\0';
|
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
|
||||||
|
|
||||||
/***** Write content *****/
|
|
||||||
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********** Show social activity (timeline) of a selected user **************/
|
/*********** Show social activity (timeline) of a selected user **************/
|
||||||
|
@ -308,6 +213,7 @@ static unsigned long Soc_ShowTimeline (const char *Query)
|
||||||
long SocCod;
|
long SocCod;
|
||||||
Soc_SocialEvent_t SocialEvent;
|
Soc_SocialEvent_t SocialEvent;
|
||||||
struct UsrData UsrDat;
|
struct UsrData UsrDat;
|
||||||
|
bool ItsMine; // I am the author of a social event
|
||||||
struct Country Cty;
|
struct Country Cty;
|
||||||
struct Institution Ins;
|
struct Institution Ins;
|
||||||
struct Centre Ctr;
|
struct Centre Ctr;
|
||||||
|
@ -321,7 +227,7 @@ static unsigned long Soc_ShowTimeline (const char *Query)
|
||||||
char SummaryStr[Cns_MAX_BYTES_TEXT+1];
|
char SummaryStr[Cns_MAX_BYTES_TEXT+1];
|
||||||
|
|
||||||
/***** Get timeline from database *****/
|
/***** Get timeline from database *****/
|
||||||
NumEvents = DB_QuerySELECT (Query,&mysql_res,"can not get your notifications");
|
NumEvents = DB_QuerySELECT (Query,&mysql_res,"can not get social events");
|
||||||
|
|
||||||
/***** List my timeline *****/
|
/***** List my timeline *****/
|
||||||
if (NumEvents) // Events found
|
if (NumEvents) // Events found
|
||||||
|
@ -350,6 +256,8 @@ static unsigned long Soc_ShowTimeline (const char *Query)
|
||||||
/* Get (from) user code (row[2]) */
|
/* Get (from) user code (row[2]) */
|
||||||
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat); // Get user's data from the database
|
Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat); // Get user's data from the database
|
||||||
|
ItsMine = (Gbl.Usrs.Me.Logged &&
|
||||||
|
UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
|
||||||
/* Get country code (row[3]) */
|
/* Get country code (row[3]) */
|
||||||
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[3]);
|
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[3]);
|
||||||
|
@ -426,7 +334,8 @@ static unsigned long Soc_ShowTimeline (const char *Query)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/* Write form to remove this event */
|
/* Write form to remove this event */
|
||||||
Soc_PutFormToRemoveSocialEvent (SocCod);
|
if (ItsMine)
|
||||||
|
Soc_PutFormToRemoveSocialEvent (SocCod);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -702,6 +611,117 @@ void Soc_StoreSocialEvent (Soc_SocialEvent_t SocialEvent,long Cod)
|
||||||
DB_QueryINSERT (Query,"can not create new social event");
|
DB_QueryINSERT (Query,"can not create new social event");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************** Put contextual link to write a new post *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Soc_PutLinkToWriteANewPost (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_New_comment;
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
Lay_PutContextualLink (ActReqSocPst,NULL,"write64x64.gif",
|
||||||
|
Txt_New_comment,Txt_New_comment);
|
||||||
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************** Form to write a new public comment ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Soc_FormSocialPost (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_New_comment;
|
||||||
|
extern const char *Txt_Send_comment;
|
||||||
|
|
||||||
|
/***** Form to write a new public comment *****/
|
||||||
|
/* Start frame */
|
||||||
|
Lay_StartRoundFrame ("560px",Txt_New_comment);
|
||||||
|
|
||||||
|
/* Start form to write the post */
|
||||||
|
Act_FormStart (ActRcvSocPst);
|
||||||
|
|
||||||
|
/* Content of new post */
|
||||||
|
fprintf (Gbl.F.Out,"<textarea name=\"Content\" cols=\"50\" rows=\"5\">"
|
||||||
|
"</textarea>");
|
||||||
|
|
||||||
|
/* Send button */
|
||||||
|
Lay_PutCreateButton (Txt_Send_comment);
|
||||||
|
|
||||||
|
/* End form */
|
||||||
|
Act_FormEnd ();
|
||||||
|
|
||||||
|
/* End frame */
|
||||||
|
Lay_EndRoundFrame ();
|
||||||
|
|
||||||
|
/***** Write current timeline *****/
|
||||||
|
Soc_ShowFollowingTimeline ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************* Receive and store a new public post *********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Soc_ReceiveSocialPost (void)
|
||||||
|
{
|
||||||
|
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
|
||||||
|
char Query[128+Cns_MAX_BYTES_LONG_TEXT];
|
||||||
|
long PstCod;
|
||||||
|
|
||||||
|
/***** Get and store new post *****/
|
||||||
|
/* Get the content of the post */
|
||||||
|
Par_GetParAndChangeFormat ("Content",Content,Cns_MAX_BYTES_LONG_TEXT,
|
||||||
|
Str_TO_RIGOROUS_HTML,true);
|
||||||
|
|
||||||
|
/* Insert post content in the database */
|
||||||
|
sprintf (Query,"INSERT INTO social_post (Content) VALUES ('%s')",
|
||||||
|
Content);
|
||||||
|
PstCod = DB_QueryINSERTandReturnCode (Query,"can not create post");
|
||||||
|
|
||||||
|
/* Insert post in social events */
|
||||||
|
Soc_StoreSocialEvent (Soc_EVENT_SOCIAL_POST,PstCod);
|
||||||
|
|
||||||
|
/***** Write current timeline *****/
|
||||||
|
Soc_ShowFollowingTimeline ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************** Get from database and write public post *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Soc_GetAndWriteSocialPost (long PstCod)
|
||||||
|
{
|
||||||
|
char Query[128];
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
unsigned long NumRows;
|
||||||
|
char Content[Cns_MAX_BYTES_LONG_TEXT+1];
|
||||||
|
|
||||||
|
/***** Get social post from database *****/
|
||||||
|
sprintf (Query,"SELECT Content FROM social_post WHERE PstCod='%ld'",
|
||||||
|
PstCod);
|
||||||
|
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get the content of a social post");
|
||||||
|
|
||||||
|
/***** Result should have a unique row *****/
|
||||||
|
if (NumRows == 1)
|
||||||
|
{
|
||||||
|
/***** Get number of rows *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
/****** Get content (row[0]) *****/
|
||||||
|
strncpy (Content,row[0],Cns_MAX_BYTES_LONG_TEXT);
|
||||||
|
Content[Cns_MAX_BYTES_LONG_TEXT] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Content[0] = '\0';
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
|
/***** Write content *****/
|
||||||
|
Msg_WriteMsgContent (Content,Cns_MAX_BYTES_LONG_TEXT,true,false);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Form to remove social event *************************/
|
/*********************** Form to remove social event *************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -726,7 +746,7 @@ static void Soc_PutFormToRemoveSocialEvent (long SocCod)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************************** Remove social event ****************************/
|
/************** Put parameter with the code of a social event ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Soc_PutHiddenParamSocCod (long SocCod)
|
static void Soc_PutHiddenParamSocCod (long SocCod)
|
||||||
|
@ -734,14 +754,119 @@ static void Soc_PutHiddenParamSocCod (long SocCod)
|
||||||
Par_PutHiddenParamLong ("SocCod",SocCod);
|
Par_PutHiddenParamLong ("SocCod",SocCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************** Get parameter with the code of a social event ****************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static long Soc_GetParamSocCod (void)
|
||||||
|
{
|
||||||
|
char LongStr[1+10+1]; // String that holds the social event code
|
||||||
|
long SocCod;
|
||||||
|
|
||||||
|
/* Get social event code */
|
||||||
|
Par_GetParToText ("SocCod",LongStr,1+10);
|
||||||
|
if (sscanf (LongStr,"%ld",&SocCod) != 1)
|
||||||
|
Lay_ShowErrorAndExit ("Wrong code of social event.");
|
||||||
|
|
||||||
|
return SocCod;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************************** Remove social event ****************************/
|
/**************************** Remove social event ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Soc_RemoveSocialEvent (void)
|
void Soc_RemoveSocialEvent (void)
|
||||||
{
|
{
|
||||||
Lay_ShowAlert (Lay_INFO,"Not implemented...");
|
struct SocialEvent Soc;
|
||||||
|
bool ICanRemove;
|
||||||
|
char Query[128];
|
||||||
|
|
||||||
/***** Write current timeline *****/
|
/***** Get the code of the social event to remove *****/
|
||||||
|
Soc.SocCod = Soc_GetParamSocCod ();
|
||||||
|
|
||||||
|
/***** Get social event author *****/
|
||||||
|
Soc_GetDataOfSocialEventByCod (&Soc);
|
||||||
|
|
||||||
|
ICanRemove = (Gbl.Usrs.Me.Logged &&
|
||||||
|
Soc.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod &&
|
||||||
|
Soc.SocialEvent == Soc_EVENT_SOCIAL_POST);
|
||||||
|
if (ICanRemove)
|
||||||
|
{
|
||||||
|
/***** Remove social event *****/
|
||||||
|
sprintf (Query,"DELETE FROM social WHERE SocCod='%ld'",Soc.SocCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove a social event");
|
||||||
|
|
||||||
|
/***** Remove social post *****/
|
||||||
|
if (Soc.SocialEvent == Soc_EVENT_SOCIAL_POST)
|
||||||
|
{
|
||||||
|
sprintf (Query,"DELETE FROM social_post WHERE PstCod='%ld'",Soc.Cod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove a social post");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Write timeline after removing *****/
|
||||||
Soc_ShowFollowingTimeline ();
|
Soc_ShowFollowingTimeline ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************* Get assignment data using its code **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Soc_GetDataOfSocialEventByCod (struct SocialEvent *Soc)
|
||||||
|
{
|
||||||
|
char Query[256];
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
|
||||||
|
/***** Get data of social event from database *****/
|
||||||
|
sprintf (Query,"SELECT SocialEvent,UsrCod,"
|
||||||
|
"CtyCod,InsCod,CtrCod,DegCod,CrsCod,"
|
||||||
|
"Cod,UNIX_TIMESTAMP(TimeEvent)"
|
||||||
|
" FROM social"
|
||||||
|
" WHERE SocCod='%ld'",
|
||||||
|
Soc->SocCod);
|
||||||
|
if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social event") == 1)
|
||||||
|
{
|
||||||
|
/***** Get social event *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
/* Get event type (row[0]) */
|
||||||
|
Soc->SocialEvent = Soc_GetSocialEventFromDB ((const char *) row[0]);
|
||||||
|
|
||||||
|
/* Get (from) user code (row[1]) */
|
||||||
|
Soc->UsrCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
|
/* Get country code (row[2]) */
|
||||||
|
Soc->CtyCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
|
||||||
|
/* Get institution code (row[3]) */
|
||||||
|
Soc->InsCod = Str_ConvertStrCodToLongCod (row[3]);
|
||||||
|
|
||||||
|
/* Get centre code (row[4]) */
|
||||||
|
Soc->CtrCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||||
|
|
||||||
|
/* Get degree code (row[5]) */
|
||||||
|
Soc->DegCod = Str_ConvertStrCodToLongCod (row[5]);
|
||||||
|
|
||||||
|
/* Get course code (row[6]) */
|
||||||
|
Soc->CrsCod = Str_ConvertStrCodToLongCod (row[6]);
|
||||||
|
|
||||||
|
/* Get file/post... code (row[7]) */
|
||||||
|
Soc->Cod = Str_ConvertStrCodToLongCod (row[7]);
|
||||||
|
|
||||||
|
/* Get time of the event (row[8]) */
|
||||||
|
Soc->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[8]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Soc->SocialEvent = Soc_EVENT_UNKNOWN;
|
||||||
|
Soc->UsrCod = -1L;
|
||||||
|
Soc->CtyCod =
|
||||||
|
Soc->InsCod =
|
||||||
|
Soc->CtrCod =
|
||||||
|
Soc->DegCod =
|
||||||
|
Soc->CrsCod = -1L;
|
||||||
|
Soc->Cod = -1L;
|
||||||
|
Soc->DateTimeUTC = (time_t) 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -81,14 +81,14 @@ typedef enum
|
||||||
/****************************** Public prototypes ****************************/
|
/****************************** Public prototypes ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Soc_FormSocialPost (void);
|
|
||||||
void Soc_ReceiveSocialPost (void);
|
|
||||||
|
|
||||||
void Soc_ShowUsrTimeline (long UsrCod);
|
void Soc_ShowUsrTimeline (long UsrCod);
|
||||||
void Soc_ShowFollowingTimeline (void);
|
void Soc_ShowFollowingTimeline (void);
|
||||||
|
|
||||||
void Soc_StoreSocialEvent (Soc_SocialEvent_t SocialEvent,long Cod);
|
void Soc_StoreSocialEvent (Soc_SocialEvent_t SocialEvent,long Cod);
|
||||||
|
|
||||||
|
void Soc_FormSocialPost (void);
|
||||||
|
void Soc_ReceiveSocialPost (void);
|
||||||
|
|
||||||
void Soc_RemoveSocialEvent (void);
|
void Soc_RemoveSocialEvent (void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue