mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-20 15:35:42 +02:00
Version 15.91
This commit is contained in:
parent
a0c5cfdf57
commit
e6b1957937
|
@ -117,13 +117,15 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.90 (2016-01-02)"
|
#define Log_PLATFORM_VERSION "SWAD 15.91 (2016-01-02)"
|
||||||
#define CSS_FILE "swad15.88.1.css"
|
#define CSS_FILE "swad15.88.1.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.91: Jan 02, 2016 Every social note can be shared.
|
||||||
|
Fixed bug when unsharing a social note. (190161 lines)
|
||||||
Version 15.90: Jan 02, 2016 Change in fields of database table that stores social notes. (190122 lines)
|
Version 15.90: Jan 02, 2016 Change in fields of database table that stores social notes. (190122 lines)
|
||||||
6 changes necessary in database:
|
6 changes necessary in database:
|
||||||
ALTER TABLE social_notes ADD COLUMN HieCod INT NOT NULL DEFAULT -1 AFTER UsrCod;
|
ALTER TABLE social_notes ADD COLUMN HieCod INT NOT NULL DEFAULT -1 AFTER UsrCod;
|
||||||
|
|
184
swad_social.c
184
swad_social.c
|
@ -78,7 +78,7 @@ static const Act_Action_t Soc_DefaultActions[Soc_NUM_SOCIAL_NOTES] =
|
||||||
/* Users tab */
|
/* Users tab */
|
||||||
|
|
||||||
/* Social tab */
|
/* Social tab */
|
||||||
ActSeeSocTmlGbl, // Soc_NOTE_SOCIAL_POST (action not used)
|
ActUnk, // Soc_NOTE_SOCIAL_POST (action not used)
|
||||||
ActSeeFor, // Soc_NOTE_FORUM_POST
|
ActSeeFor, // Soc_NOTE_FORUM_POST
|
||||||
|
|
||||||
/* Messages tab */
|
/* Messages tab */
|
||||||
|
@ -153,12 +153,13 @@ static long Soc_GetParamPubCod (void);
|
||||||
|
|
||||||
static void Soc_ShareSocialPublishing (void);
|
static void Soc_ShareSocialPublishing (void);
|
||||||
static void Soc_UnshareSocialPublishing (void);
|
static void Soc_UnshareSocialPublishing (void);
|
||||||
|
static void Soc_UnshareASocialPublishingFromDB (const struct SocialNote *SocNot);
|
||||||
|
|
||||||
static void Soc_RequestRemovalSocialPublishing (void);
|
static void Soc_RequestRemovalSocialPublishing (void);
|
||||||
static void Soc_RemoveSocialPublishing (void);
|
static void Soc_RemoveSocialPublishing (void);
|
||||||
|
static void Soc_RemoveASocialPublishingFromDB (const struct SocialPublishing *SocPub,
|
||||||
static void Soc_DeleteASocialPublishingFromDB (const struct SocialPublishing *SocPub,
|
|
||||||
const struct SocialNote *SocNot);
|
const struct SocialNote *SocNot);
|
||||||
|
static void Soc_CheckAndDeleteASocialNoteFromDB (const struct SocialNote *SocNot);
|
||||||
|
|
||||||
static bool Soc_CheckIfNoteIsYetPublishedByMe (long NotCod);
|
static bool Soc_CheckIfNoteIsYetPublishedByMe (long NotCod);
|
||||||
static unsigned long Soc_GetNumPubsOfANote (long NotCod);
|
static unsigned long Soc_GetNumPubsOfANote (long NotCod);
|
||||||
|
@ -332,19 +333,19 @@ static void Soc_ShowTimeline (const char *Query,Act_Action_t UpdateAction)
|
||||||
static void Soc_GetDataOfSocialPublishingFromRow (MYSQL_ROW row,struct SocialPublishing *SocPub)
|
static void Soc_GetDataOfSocialPublishingFromRow (MYSQL_ROW row,struct SocialPublishing *SocPub)
|
||||||
{
|
{
|
||||||
/* Get social publishing code (row[0]) */
|
/* Get social publishing code (row[0]) */
|
||||||
SocPub->PubCod = Str_ConvertStrCodToLongCod (row[0]);
|
SocPub->PubCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
|
||||||
/* Get author's code (row[1]) */
|
/* Get author's code (row[1]) */
|
||||||
SocPub->AuthorCod = Str_ConvertStrCodToLongCod (row[1]);
|
SocPub->AuthorCod = Str_ConvertStrCodToLongCod (row[1]);
|
||||||
|
|
||||||
/* Get publisher's code (row[2]) */
|
/* Get publisher's code (row[2]) */
|
||||||
SocPub->PublisherCod = Str_ConvertStrCodToLongCod (row[2]);
|
SocPub->PublisherCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
|
||||||
/* Get social note code (row[3]) */
|
/* Get social note code (row[3]) */
|
||||||
SocPub->NotCod = Str_ConvertStrCodToLongCod (row[3]);
|
SocPub->NotCod = Str_ConvertStrCodToLongCod (row[3]);
|
||||||
|
|
||||||
/* Get time of the note (row[4]) */
|
/* Get time of the note (row[4]) */
|
||||||
SocPub->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[4]);
|
SocPub->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -404,7 +405,7 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
"PHOTO60x80",Pho_ZOOM);
|
"PHOTO60x80",Pho_ZOOM);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Right: author's name, time and summary *****/
|
/***** Right: author's name, time, summary and buttons *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"SOCIAL_RIGHT_CONTAINER\">");
|
fprintf (Gbl.F.Out,"<div class=\"SOCIAL_RIGHT_CONTAINER\">");
|
||||||
|
|
||||||
/* Write author's full name and nickname */
|
/* Write author's full name and nickname */
|
||||||
|
@ -418,32 +419,13 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
/* Write date and time */
|
/* Write date and time */
|
||||||
Soc_WriteNoteDate (SocNot->DateTimeUTC);
|
Soc_WriteNoteDate (SocNot->DateTimeUTC);
|
||||||
|
|
||||||
|
/* Write content of the note */
|
||||||
if (SocNot->NoteType == Soc_NOTE_SOCIAL_POST)
|
if (SocNot->NoteType == Soc_NOTE_SOCIAL_POST)
|
||||||
{
|
{
|
||||||
/* Write post content */
|
/* Write post content */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">");
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">");
|
||||||
Soc_GetAndWriteSocialPost (SocNot->Cod);
|
Soc_GetAndWriteSocialPost (SocNot->Cod);
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Put icons to share/unshare/remove *****/
|
|
||||||
if (Gbl.Usrs.Me.Logged)
|
|
||||||
{
|
|
||||||
if (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // I am the author
|
|
||||||
{
|
|
||||||
if (PutIconRemove)
|
|
||||||
/* Put icon to remove this publishing */
|
|
||||||
Soc_PutFormToRemoveSocialPublishing (SocPub->PubCod);
|
|
||||||
}
|
|
||||||
else // I am not the author
|
|
||||||
{
|
|
||||||
if (Soc_CheckIfNoteIsYetPublishedByMe (SocNot->NotCod)) // I have yet published this social note
|
|
||||||
/* Put icon to unshare this publishing */
|
|
||||||
Soc_PutFormToUnshareSocialPublishing (SocPub->PubCod);
|
|
||||||
else // I have not yet published this social note
|
|
||||||
/* Put icon to share this publishing */
|
|
||||||
Soc_PutFormToShareSocialPublishing (SocPub->PubCod);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -458,13 +440,14 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
switch (SocNot->NoteType)
|
switch (SocNot->NoteType)
|
||||||
{
|
{
|
||||||
case Soc_NOTE_INS_DOC_PUB_FILE:
|
case Soc_NOTE_INS_DOC_PUB_FILE:
|
||||||
case Soc_NOTE_INS_SHA_PUB_FILE:
|
case Soc_NOTE_INS_SHA_PUB_FILE:
|
||||||
/* Get institution data */
|
/* Get institution data */
|
||||||
Ins.InsCod = SocNot->HieCod;
|
Ins.InsCod = SocNot->HieCod;
|
||||||
Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA);
|
Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_BASIC_DATA);
|
||||||
|
|
||||||
|
/* Write location (institution) in hierarchy */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
||||||
Txt_Institution,Ins.ShortName);
|
Txt_Institution,Ins.ShortName);
|
||||||
break;
|
break;
|
||||||
|
@ -474,6 +457,7 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
Ctr.CtrCod = SocNot->HieCod;
|
Ctr.CtrCod = SocNot->HieCod;
|
||||||
Ctr_GetDataOfCentreByCod (&Ctr);
|
Ctr_GetDataOfCentreByCod (&Ctr);
|
||||||
|
|
||||||
|
/* Write location (centre) in hierarchy */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
||||||
Txt_Centre,Ctr.ShortName);
|
Txt_Centre,Ctr.ShortName);
|
||||||
break;
|
break;
|
||||||
|
@ -483,6 +467,7 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
Deg.DegCod = SocNot->HieCod;
|
Deg.DegCod = SocNot->HieCod;
|
||||||
Deg_GetDataOfDegreeByCod (&Deg);
|
Deg_GetDataOfDegreeByCod (&Deg);
|
||||||
|
|
||||||
|
/* Write location (degree) in hierarchy */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
||||||
Txt_Degree,Deg.ShortName);
|
Txt_Degree,Deg.ShortName);
|
||||||
break;
|
break;
|
||||||
|
@ -494,22 +479,46 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
|
||||||
Crs.CrsCod = SocNot->HieCod;
|
Crs.CrsCod = SocNot->HieCod;
|
||||||
Crs_GetDataOfCourseByCod (&Crs);
|
Crs_GetDataOfCourseByCod (&Crs);
|
||||||
|
|
||||||
|
/* Write location (course) in hierarchy */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
||||||
Txt_Course,Crs.ShortName);
|
Txt_Course,Crs.ShortName);
|
||||||
break;
|
break;
|
||||||
case Soc_NOTE_FORUM_POST:
|
case Soc_NOTE_FORUM_POST:
|
||||||
|
/* Write forum name */
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s: %s</div>",
|
||||||
Txt_Forum,ForumName);
|
Txt_Forum,ForumName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write content of the note */
|
/* Write note summary */
|
||||||
Soc_GetNoteSummary (SocNot,SummaryStr,Soc_MAX_BYTES_SUMMARY);
|
Soc_GetNoteSummary (SocNot,SummaryStr,Soc_MAX_BYTES_SUMMARY);
|
||||||
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s</div>",SummaryStr);
|
fprintf (Gbl.F.Out,"<div class=\"DAT\">%s</div>",SummaryStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Put icons to share/unshare/remove */
|
||||||
|
if (Gbl.Usrs.Me.Logged)
|
||||||
|
{
|
||||||
|
if (UsrDat->UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // I am the author
|
||||||
|
{
|
||||||
|
if (PutIconRemove)
|
||||||
|
/* Put icon to remove this publishing */
|
||||||
|
Soc_PutFormToRemoveSocialPublishing (SocPub->PubCod);
|
||||||
|
}
|
||||||
|
else // I am not the author
|
||||||
|
{
|
||||||
|
if (Soc_CheckIfNoteIsYetPublishedByMe (SocNot->NotCod))
|
||||||
|
// I have yet published this social note
|
||||||
|
/* Put icon to unshare this publishing */
|
||||||
|
Soc_PutFormToUnshareSocialPublishing (SocPub->PubCod);
|
||||||
|
else
|
||||||
|
// I have not yet published this social note
|
||||||
|
/* Put icon to share this publishing */
|
||||||
|
Soc_PutFormToShareSocialPublishing (SocPub->PubCod);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* End of right part */
|
/* End of right part */
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
|
@ -943,7 +952,7 @@ static void Soc_PutFormToShareSocialPublishing (long PubCod)
|
||||||
|
|
||||||
static void Soc_PutFormToUnshareSocialPublishing (long PubCod)
|
static void Soc_PutFormToUnshareSocialPublishing (long PubCod)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Shared;
|
extern const char *Txt_SOCIAL_PUBLISHING_Shared;
|
||||||
|
|
||||||
/***** Form to share social publishing *****/
|
/***** Form to share social publishing *****/
|
||||||
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
if (Gbl.Usrs.Other.UsrDat.UsrCod > 0)
|
||||||
|
@ -961,8 +970,8 @@ static void Soc_PutFormToUnshareSocialPublishing (long PubCod)
|
||||||
" class=\"ICON20x20\" />"
|
" class=\"ICON20x20\" />"
|
||||||
"</div>",
|
"</div>",
|
||||||
Gbl.Prefs.IconsURL,
|
Gbl.Prefs.IconsURL,
|
||||||
Txt_Shared,
|
Txt_SOCIAL_PUBLISHING_Shared,
|
||||||
Txt_Shared);
|
Txt_SOCIAL_PUBLISHING_Shared);
|
||||||
Act_FormEnd ();
|
Act_FormEnd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,7 +1066,7 @@ void Soc_ShareSocialPubUsr (void)
|
||||||
|
|
||||||
static void Soc_ShareSocialPublishing (void)
|
static void Soc_ShareSocialPublishing (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Shared;
|
extern const char *Txt_SOCIAL_PUBLISHING_Shared;
|
||||||
struct SocialPublishing SocPub;
|
struct SocialPublishing SocPub;
|
||||||
bool ICanShare;
|
bool ICanShare;
|
||||||
bool IHavePublishedThisNote;
|
bool IHavePublishedThisNote;
|
||||||
|
@ -1081,7 +1090,7 @@ static void Soc_ShareSocialPublishing (void)
|
||||||
Soc_PublishSocialNoteInTimeline (&SocPub);
|
Soc_PublishSocialNoteInTimeline (&SocPub);
|
||||||
|
|
||||||
/***** Message of success *****/
|
/***** Message of success *****/
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_Shared);
|
Lay_ShowAlert (Lay_SUCCESS,Txt_SOCIAL_PUBLISHING_Shared);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1122,11 +1131,10 @@ void Soc_UnshareSocialPubUsr (void)
|
||||||
|
|
||||||
static void Soc_UnshareSocialPublishing (void)
|
static void Soc_UnshareSocialPublishing (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Unshared;
|
extern const char *Txt_SOCIAL_PUBLISHING_Unshared;
|
||||||
struct SocialPublishing SocPub;
|
struct SocialPublishing SocPub;
|
||||||
struct SocialNote SocNot;
|
struct SocialNote SocNot;
|
||||||
bool ICanUnshare;
|
bool ICanUnshare;
|
||||||
bool IHavePublishedThisNote;
|
|
||||||
|
|
||||||
/***** Get the code of the social publishing to unshare *****/
|
/***** Get the code of the social publishing to unshare *****/
|
||||||
SocPub.PubCod = Soc_GetParamPubCod ();
|
SocPub.PubCod = Soc_GetParamPubCod ();
|
||||||
|
@ -1139,22 +1147,40 @@ static void Soc_UnshareSocialPublishing (void)
|
||||||
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
||||||
|
|
||||||
ICanUnshare = (Gbl.Usrs.Me.Logged &&
|
ICanUnshare = (Gbl.Usrs.Me.Logged &&
|
||||||
SocPub.AuthorCod != Gbl.Usrs.Me.UsrDat.UsrCod); // I am not the author
|
SocPub.AuthorCod != Gbl.Usrs.Me.UsrDat.UsrCod); // I have shared the note
|
||||||
if (ICanUnshare)
|
if (ICanUnshare)
|
||||||
{
|
{
|
||||||
/***** Check if I have yet shared this social note *****/
|
/***** Delete social publishing from database *****/
|
||||||
IHavePublishedThisNote = Soc_CheckIfNoteIsYetPublishedByMe (SocPub.NotCod);
|
Soc_UnshareASocialPublishingFromDB (&SocNot);
|
||||||
if (IHavePublishedThisNote)
|
|
||||||
{
|
|
||||||
/***** Delete social publishing from database *****/
|
|
||||||
Soc_DeleteASocialPublishingFromDB (&SocPub,&SocNot);
|
|
||||||
|
|
||||||
/***** Message of success *****/
|
/***** Message of success *****/
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_Unshared);
|
Lay_ShowAlert (Lay_SUCCESS,Txt_SOCIAL_PUBLISHING_Unshared);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**************** Unshare a social publishing from database ******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Soc_UnshareASocialPublishingFromDB (const struct SocialNote *SocNot)
|
||||||
|
{
|
||||||
|
char Query[128];
|
||||||
|
|
||||||
|
/***** Remove social publishing *****/
|
||||||
|
sprintf (Query,"DELETE FROM social_timeline"
|
||||||
|
" WHERE NotCod='%ld'"
|
||||||
|
" AND PublisherCod='%ld'" // I have share this note
|
||||||
|
" AND AuthorCod<>'%ld'", // I am not the author
|
||||||
|
SocNot->NotCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove a social publishing");
|
||||||
|
|
||||||
|
/***** Check if this was the unique publishing of this note.
|
||||||
|
If so, remove the note *****/
|
||||||
|
Soc_CheckAndDeleteASocialNoteFromDB (SocNot);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/**************** Request the removal of a social publishing *****************/
|
/**************** Request the removal of a social publishing *****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1209,8 +1235,7 @@ static void Soc_RequestRemovalSocialPublishing (void)
|
||||||
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
||||||
|
|
||||||
ICanRemove = (Gbl.Usrs.Me.Logged &&
|
ICanRemove = (Gbl.Usrs.Me.Logged &&
|
||||||
SocPub.PublisherCod == Gbl.Usrs.Me.UsrDat.UsrCod &&
|
SocPub.PublisherCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
SocNot.NoteType == Soc_NOTE_SOCIAL_POST);
|
|
||||||
if (ICanRemove)
|
if (ICanRemove)
|
||||||
{
|
{
|
||||||
/***** Initialize structure with user's data *****/
|
/***** Initialize structure with user's data *****/
|
||||||
|
@ -1280,7 +1305,7 @@ void Soc_RemoveSocialPubUsr (void)
|
||||||
|
|
||||||
static void Soc_RemoveSocialPublishing (void)
|
static void Soc_RemoveSocialPublishing (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Comment_removed;
|
extern const char *Txt_SOCIAL_PUBLISHING_Removed;
|
||||||
struct SocialPublishing SocPub;
|
struct SocialPublishing SocPub;
|
||||||
struct SocialNote SocNot;
|
struct SocialNote SocNot;
|
||||||
bool ICanRemove;
|
bool ICanRemove;
|
||||||
|
@ -1296,15 +1321,14 @@ static void Soc_RemoveSocialPublishing (void)
|
||||||
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
Soc_GetDataOfSocialNoteByCod (&SocNot);
|
||||||
|
|
||||||
ICanRemove = (Gbl.Usrs.Me.Logged &&
|
ICanRemove = (Gbl.Usrs.Me.Logged &&
|
||||||
SocPub.PublisherCod == Gbl.Usrs.Me.UsrDat.UsrCod &&
|
SocPub.PublisherCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
SocNot.NoteType == Soc_NOTE_SOCIAL_POST);
|
|
||||||
if (ICanRemove)
|
if (ICanRemove)
|
||||||
{
|
{
|
||||||
/***** Delete social publishing from database *****/
|
/***** Delete social publishing from database *****/
|
||||||
Soc_DeleteASocialPublishingFromDB (&SocPub,&SocNot);
|
Soc_RemoveASocialPublishingFromDB (&SocPub,&SocNot);
|
||||||
|
|
||||||
/***** Message of success *****/
|
/***** Message of success *****/
|
||||||
Lay_ShowAlert (Lay_SUCCESS,Txt_Comment_removed);
|
Lay_ShowAlert (Lay_SUCCESS,Txt_SOCIAL_PUBLISHING_Removed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1312,22 +1336,40 @@ static void Soc_RemoveSocialPublishing (void)
|
||||||
/**************** Delete a social publishing from database *******************/
|
/**************** Delete a social publishing from database *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Soc_DeleteASocialPublishingFromDB (const struct SocialPublishing *SocPub,
|
static void Soc_RemoveASocialPublishingFromDB (const struct SocialPublishing *SocPub,
|
||||||
const struct SocialNote *SocNot)
|
const struct SocialNote *SocNot)
|
||||||
|
{
|
||||||
|
char Query[128];
|
||||||
|
|
||||||
|
/***** Remove social publishing *****/
|
||||||
|
sprintf (Query,"DELETE FROM social_timeline"
|
||||||
|
" WHERE PubCod='%ld'"
|
||||||
|
" AND NotCod='%ld'" // Extra check: this is the note
|
||||||
|
" AND PublisherCod='%ld'" // Extra check: I have published this note
|
||||||
|
" AND AuthorCod='%ld'", // Extra check: I am the author
|
||||||
|
SocPub->PubCod,
|
||||||
|
SocNot->NotCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
DB_QueryDELETE (Query,"can not remove a social publishing");
|
||||||
|
|
||||||
|
/***** Check if this was the unique publishing of this note.
|
||||||
|
If so, remove the note *****/
|
||||||
|
Soc_CheckAndDeleteASocialNoteFromDB (SocNot);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**** Check if deletion is possible and delete a social note from database ***/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Soc_CheckAndDeleteASocialNoteFromDB (const struct SocialNote *SocNot)
|
||||||
{
|
{
|
||||||
char Query[128];
|
char Query[128];
|
||||||
unsigned long NumPubs;
|
unsigned long NumPubs;
|
||||||
|
|
||||||
/***** Remove social publishing *****/
|
/***** Count number of times this note is published *****/
|
||||||
sprintf (Query,"DELETE FROM social_timeline WHERE PubCod='%ld'",
|
|
||||||
SocPub->PubCod);
|
|
||||||
DB_QueryDELETE (Query,"can not remove a social publishing");
|
|
||||||
|
|
||||||
/***** Count number of times this note
|
|
||||||
is published in timeline after removal *****/
|
|
||||||
NumPubs = Soc_GetNumPubsOfANote (SocNot->NotCod);
|
NumPubs = Soc_GetNumPubsOfANote (SocNot->NotCod);
|
||||||
|
if (NumPubs == 0) // There are no publishings of this note
|
||||||
if (NumPubs == 0) // This was the last publishing of this note
|
|
||||||
{
|
{
|
||||||
/***** Remove social note *****/
|
/***** Remove social note *****/
|
||||||
sprintf (Query,"DELETE FROM social_notes WHERE NotCod='%ld'",
|
sprintf (Query,"DELETE FROM social_notes WHERE NotCod='%ld'",
|
||||||
|
@ -1386,7 +1428,7 @@ static void Soc_GetDataOfSocialPublishingByCod (struct SocialPublishing *SocPub)
|
||||||
" FROM social_timeline"
|
" FROM social_timeline"
|
||||||
" WHERE PubCod='%ld'",
|
" WHERE PubCod='%ld'",
|
||||||
SocPub->PubCod);
|
SocPub->PubCod);
|
||||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social note"))
|
if (DB_QuerySELECT (Query,&mysql_res,"can not get data of social publishing"))
|
||||||
{
|
{
|
||||||
/***** Get social note *****/
|
/***** Get social note *****/
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -1441,19 +1483,19 @@ static void Soc_GetDataOfSocialNoteByCod (struct SocialNote *SocNot)
|
||||||
static void Soc_GetDataOfSocialNoteFromRow (MYSQL_ROW row,struct SocialNote *SocNot)
|
static void Soc_GetDataOfSocialNoteFromRow (MYSQL_ROW row,struct SocialNote *SocNot)
|
||||||
{
|
{
|
||||||
/* Get social code (row[0]) */
|
/* Get social code (row[0]) */
|
||||||
SocNot->NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
SocNot->NotCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
|
||||||
/* Get note type (row[1]) */
|
/* Get note type (row[1]) */
|
||||||
SocNot->NoteType = Soc_GetSocialNoteFromDB ((const char *) row[1]);
|
SocNot->NoteType = Soc_GetSocialNoteFromDB ((const char *) row[1]);
|
||||||
|
|
||||||
/* Get (from) user code (row[2]) */
|
/* Get (from) user code (row[2]) */
|
||||||
SocNot->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
SocNot->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
|
||||||
|
|
||||||
/* Get hierarchy code (row[3]) */
|
/* Get hierarchy code (row[3]) */
|
||||||
SocNot->HieCod = Str_ConvertStrCodToLongCod (row[3]);
|
SocNot->HieCod = Str_ConvertStrCodToLongCod (row[3]);
|
||||||
|
|
||||||
/* Get file/post... code (row[4]) */
|
/* Get file/post... code (row[4]) */
|
||||||
SocNot->Cod = Str_ConvertStrCodToLongCod (row[4]);
|
SocNot->Cod = Str_ConvertStrCodToLongCod (row[4]);
|
||||||
|
|
||||||
/* Get time of the note (row[5]) */
|
/* Get time of the note (row[5]) */
|
||||||
SocNot->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[5]);
|
SocNot->DateTimeUTC = Dat_GetUNIXTimeFromStr (row[5]);
|
||||||
|
|
126
swad_text.c
126
swad_text.c
|
@ -4603,27 +4603,6 @@ const char *Txt_columns =
|
||||||
"colunas";
|
"colunas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Comment_removed =
|
|
||||||
#if L==1
|
|
||||||
"Comentari eliminat.";
|
|
||||||
#elif L==2
|
|
||||||
"Kommentar entfernt.";
|
|
||||||
#elif L==3
|
|
||||||
"Comment removed.";
|
|
||||||
#elif L==4
|
|
||||||
"Comentario eliminado";
|
|
||||||
#elif L==5
|
|
||||||
"Commentaire supprimé.";
|
|
||||||
#elif L==6
|
|
||||||
"Comentario eliminado."; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Commento rimosso.";
|
|
||||||
#elif L==8
|
|
||||||
"Komentarz usuniete.";
|
|
||||||
#elif L==9
|
|
||||||
"Comentário removido.";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Comments =
|
const char *Txt_Comments =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Comentaris";
|
"Comentaris";
|
||||||
|
@ -34658,27 +34637,6 @@ const char *Txt_Share =
|
||||||
"Compartilhar";
|
"Compartilhar";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Shared =
|
|
||||||
#if L==1
|
|
||||||
"Compartit";
|
|
||||||
#elif L==2
|
|
||||||
"Geteilt";
|
|
||||||
#elif L==3
|
|
||||||
"Shared";
|
|
||||||
#elif L==4
|
|
||||||
"Compartido";
|
|
||||||
#elif L==5
|
|
||||||
"Partagé";
|
|
||||||
#elif L==6
|
|
||||||
"Compartido"; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Condiviso";
|
|
||||||
#elif L==8
|
|
||||||
"Dzielone";
|
|
||||||
#elif L==9
|
|
||||||
"Compartilhado";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Shared_files_area =
|
const char *Txt_Shared_files_area =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Zona d'arxius compartits";
|
"Zona d'arxius compartits";
|
||||||
|
@ -35573,6 +35531,69 @@ const char *Txt_SOCIAL_NOTE[Soc_NUM_SOCIAL_NOTES] =
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char *Txt_SOCIAL_PUBLISHING_Removed =
|
||||||
|
#if L==1
|
||||||
|
"Eliminat";
|
||||||
|
#elif L==2
|
||||||
|
"Entfernt";
|
||||||
|
#elif L==3
|
||||||
|
"Removed";
|
||||||
|
#elif L==4
|
||||||
|
"Rliminado";
|
||||||
|
#elif L==5
|
||||||
|
"Supprimé";
|
||||||
|
#elif L==6
|
||||||
|
"Eliminado"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Rimosso";
|
||||||
|
#elif L==8
|
||||||
|
"Usuniete";
|
||||||
|
#elif L==9
|
||||||
|
"Removido";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_SOCIAL_PUBLISHING_Shared =
|
||||||
|
#if L==1
|
||||||
|
"Compartit";
|
||||||
|
#elif L==2
|
||||||
|
"Geteilt";
|
||||||
|
#elif L==3
|
||||||
|
"Shared";
|
||||||
|
#elif L==4
|
||||||
|
"Compartido";
|
||||||
|
#elif L==5
|
||||||
|
"Partagé";
|
||||||
|
#elif L==6
|
||||||
|
"Compartido"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Condiviso";
|
||||||
|
#elif L==8
|
||||||
|
"Dzielone";
|
||||||
|
#elif L==9
|
||||||
|
"Compartilhado";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_SOCIAL_PUBLISHING_Unshared = // No longer shared
|
||||||
|
#if L==1
|
||||||
|
"No compartit";
|
||||||
|
#elif L==2
|
||||||
|
"Kein geteilt";
|
||||||
|
#elif L==3
|
||||||
|
"Unshared";
|
||||||
|
#elif L==4
|
||||||
|
"No compartido";
|
||||||
|
#elif L==5
|
||||||
|
"Non partagé";
|
||||||
|
#elif L==6
|
||||||
|
"No compartido"; // Okoteve traducción
|
||||||
|
#elif L==7
|
||||||
|
"Non condiviso";
|
||||||
|
#elif L==8
|
||||||
|
"Niedzieloną";
|
||||||
|
#elif L==9
|
||||||
|
"Não compartilhado";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Sort_degrees_by =
|
const char *Txt_Sort_degrees_by =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Ordenar titulacions per";
|
"Ordenar titulacions per";
|
||||||
|
@ -46807,27 +46828,6 @@ const char *Txt_Unread_BR_msgs =
|
||||||
"Não<br />lidas";
|
"Não<br />lidas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char *Txt_Unshared = // No longer shared
|
|
||||||
#if L==1
|
|
||||||
"No compartit";
|
|
||||||
#elif L==2
|
|
||||||
"Kein geteilt";
|
|
||||||
#elif L==3
|
|
||||||
"Unshared";
|
|
||||||
#elif L==4
|
|
||||||
"No compartido";
|
|
||||||
#elif L==5
|
|
||||||
"Non partagé";
|
|
||||||
#elif L==6
|
|
||||||
"No compartido"; // Okoteve traducción
|
|
||||||
#elif L==7
|
|
||||||
"Non condiviso";
|
|
||||||
#elif L==8
|
|
||||||
"Niedzieloną";
|
|
||||||
#elif L==9
|
|
||||||
"Não compartilhado";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *Txt_Update =
|
const char *Txt_Update =
|
||||||
#if L==1
|
#if L==1
|
||||||
"Actualitzar";
|
"Actualitzar";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user