Version 15.105

This commit is contained in:
Antonio Cañas Vargas 2016-01-10 03:10:40 +01:00
parent f7a717e0df
commit c4f75d06d4
12 changed files with 204 additions and 101 deletions

View File

@ -1675,7 +1675,7 @@ a:hover img.CENTRE_PHOTO_SHOW
text-align:center;
vertical-align:middle;
}
#recent_timeline
#recent_timeline_list
{
display:none;
}

View File

@ -26,9 +26,6 @@ var Gbl_HTMLContent;
// Global variable used to call SWAD via AJAX
var ActionAJAX;
// Global variable that stores last publishing code got from database in timeline
var LastPubCod = 0;
// Global variables used in writeLocalClock()
var secondsSince1970UTC;
@ -358,8 +355,7 @@ function refreshSocialTimeline() {
objXMLHttpReqSoc = AJAXCreateObject();
if (objXMLHttpReqSoc) {
var RefreshParams = RefreshParamNxtActSoc + '&' +
RefreshParamIdSes + '&' +
'LastPubCod=' + LastPubCod;
RefreshParamIdSes;
objXMLHttpReqSoc.onreadystatechange = readSocialTimelineData; // onreadystatechange must be lowercase
objXMLHttpReqSoc.open('POST',ActionAJAX,true);
@ -454,14 +450,11 @@ function readLastClicksData() {
function readSocialTimelineData() {
if (objXMLHttpReqSoc.readyState == 4) { // Check if data have been received
if (objXMLHttpReqSoc.status == 200) {
var endOfDelay = objXMLHttpReqSoc.responseText.indexOf('|',0); // Get separator position
var endOfLastPubCod = objXMLHttpReqSoc.responseText.indexOf('|',endOfDelay+1); // Get separator position
var endOfDelay = objXMLHttpReqSoc.responseText.indexOf('|',0); // Get separator position
var delay = parseInt(objXMLHttpReqSoc.responseText.substring(0,endOfDelay)); // Get refresh delay
var htmlRecentTimeline = objXMLHttpReqSoc.responseText.substring(endOfDelay+1); // Get HTML code for social timeline
var delay = parseInt(objXMLHttpReqSoc.responseText.substring(0,endOfDelay)); // Get refresh delay
LastPubCod = parseInt(objXMLHttpReqSoc.responseText.substring(endOfDelay+1,endOfLastPubCod)); // Get last publishing code
var htmlRecentTimeline = objXMLHttpReqSoc.responseText.substring(endOfLastPubCod+1); // Get HTML code for social timeline
var recentTimeline = document.getElementById('recent_timeline'); // Access to UL with the recent timeline
var recentTimeline = document.getElementById('recent_timeline_list'); // Access to UL with the recent timeline
if (recentTimeline) {
recentTimeline.innerHTML = htmlRecentTimeline + recentTimeline.innerHTML; // Update list of publishings in recent timeline
var countRecentTimeline = recentTimeline.childNodes.length;
@ -488,11 +481,11 @@ function readSocialTimelineData() {
function moveRecentTimelineToTimeline() {
var viewNewPostsContainer = document.getElementById('view_new_posts_container');
var viewNewPostsCount = document.getElementById('view_new_posts_count');
var recentTimeline = document.getElementById('recent_timeline'); // Access to social timeline DIV
var recentTimeline = document.getElementById('recent_timeline_list'); // Access to social timeline DIV
var countRecentTimeline = recentTimeline.childNodes.length;
if (countRecentTimeline) {
var timeline = document.getElementById("timeline");
var timeline = document.getElementById("timeline_list");
// Move all the LI elements in UL 'recentTimeline' to the top of UL 'timeline'
for(var i=0; i < countRecentTimeline; i++)
timeline.insertBefore(recentTimeline.lastChild, timeline.childNodes[0]);

View File

@ -905,6 +905,7 @@ CREATE TABLE IF NOT EXISTS sessions (
CrsCod INT NOT NULL DEFAULT -1,
LastTime DATETIME,
LastRefresh DATETIME,
LastPubCod BIGINT NOT NULL DEFAULT 0,
LastPageMsgRcv INT NOT NULL DEFAULT 1,
LastPageMsgSnt INT NOT NULL DEFAULT 1,
WhatToSearch TINYINT NOT NULL DEFAULT 0,

View File

@ -1339,7 +1339,7 @@ struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
/* ActMnu */{ 2,-1,TabUnk,ActMnu ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,NULL ,NULL},
/* ActRefCon */{ 845,-1,TabUnk,ActRefCon ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshNotifsAndConnected ,NULL},
/* ActRefLstClk */{ 994,-1,TabUnk,ActRefLstClk ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshLastClicks ,NULL},
/* ActRefSocTim */{1509,-1,TabUnk,ActRefSocTim ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,Soc_GetParamLastPubCod ,Lay_RefreshSocialTimeline ,NULL},
/* ActRefSocTim */{1509,-1,TabUnk,ActRefSocTim ,0x1FE,0x1FE,0x1FE,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Lay_RefreshSocialTimeline ,NULL},
/* ActWebSvc */{ 892,-1,TabUnk,ActWebSvc ,0x1FF,0x1FF,0x1FF,Act_CONTENT_NORM,Act_MAIN_WINDOW,NULL ,Plg_WebService ,NULL},
// TabSys ******************************************************************

View File

@ -113,18 +113,24 @@
// TODO: Forum SWAD should be always named "SWAD"?
// TODO: Enable chat for guests?
// TODO: Go to forum post (or at least to forum thread) from social timeline?
// TODO: Include time of last comment in table social_timeline to display social publishings with new comments when refreshing
// TODO: Change refreshing time from 5 seconds to 1 minute or so. Increment one second after each refresh?
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.104.4 (2016-01-09)"
#define Log_PLATFORM_VERSION "SWAD 15.105 (2016-01-10)"
#define CSS_FILE "swad15.102.css"
#define JS_FILE "swad15.104.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.105: Jan 10, 2016 Get only publishings newest than a give publishing. (191912 lines)
1 change necessary in database:
ALTER TABLE sessions ADD COLUMN LastPubCod BIGINT NOT NULL DEFAULT 0 AFTER LastRefresh;
Version 15.104.4: Jan 09, 2016 Last social publishing code is sent and got via AJAX. (191831 lines)
Version 15.104.3: Jan 09, 2016 Changes in layout of social timeline. (191784 lines)
Version 15.104.2: Jan 09, 2016 Refresh recent social timeline via AJAX. (191769 lines)

View File

@ -1908,12 +1908,14 @@ mysql> DESCRIBE sessions;
| CrsCod | int(11) | NO | | -1 | |
| LastTime | datetime | YES | | NULL | |
| LastRefresh | datetime | YES | | NULL | |
| LastPubCod | bigint(20) | NO | | 0 | |
| LastPageMsgRcv | int(11) | NO | | 1 | |
| LastPageMsgSnt | int(11) | NO | | 1 | |
| WhatToSearch | tinyint(4) | NO | | 0 | |
| SearchString | varchar(255) | NO | | NULL | |
| SideCols | tinyint(4) | NO | | 3 | |
+----------------+--------------+------+-----+---------+-------+
15 rows in set (0.00 sec)
17 rows in set (0.00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS sessions ("
"SessionId CHAR(43) NOT NULL,"
@ -1927,6 +1929,7 @@ mysql> DESCRIBE sessions;
"CrsCod INT NOT NULL DEFAULT -1,"
"LastTime DATETIME,"
"LastRefresh DATETIME,"
"LastPubCod BIGINT NOT NULL DEFAULT 0"
"LastPageMsgRcv INT NOT NULL DEFAULT 1,"
"LastPageMsgSnt INT NOT NULL DEFAULT 1,"
"WhatToSearch TINYINT NOT NULL DEFAULT 0,"

View File

@ -382,10 +382,6 @@ struct Globals
bool Error; // To signal that an error has happened
const char *NicknameForQR; // Used as parameter in contextual links
} Usrs;
struct
{
long LastPubCod; // Last code of publishing got from database when refreshing timeline via AJAX
} Social;
struct
{
Sco_Scope_t Current;

View File

@ -1498,9 +1498,8 @@ void Lay_RefreshLastClicks (void)
void Lay_RefreshSocialTimeline (void)
{
// Send, before the HTML, the refresh time and the last publishing got from database
fprintf (Gbl.F.Out,"%lu|%ld|",
Cfg_TIME_TO_REFRESH_SOCIAL_TIMELINE,
Gbl.Social.LastPubCod);
fprintf (Gbl.F.Out,"%lu|",
Cfg_TIME_TO_REFRESH_SOCIAL_TIMELINE);
Soc_GetAndShowRecentTimelineGbl ();
/***** All the output is made, so don't write anymore *****/

View File

@ -568,7 +568,7 @@ void Pag_GetParamPagNum (Pag_WhatPaginate_t WhatPaginate)
void Pag_SaveLastPageMsgIntoSession (Pag_WhatPaginate_t WhatPaginate,unsigned NumPage)
{
char Query[512];
char Query[128+Ses_LENGTH_SESSION_ID];
/***** Save last page of received/sent messages *****/
sprintf (Query,"UPDATE sessions SET %s='%u' WHERE SessionId='%s'",
@ -584,7 +584,7 @@ void Pag_SaveLastPageMsgIntoSession (Pag_WhatPaginate_t WhatPaginate,unsigned Nu
unsigned Pag_GetLastPageMsgFromSession (Pag_WhatPaginate_t WhatPaginate)
{
char Query[512];
char Query[128+Ses_LENGTH_SESSION_ID];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned long NumRows;

View File

@ -178,13 +178,21 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Soc_BuildQueryToGetTimelineGbl (bool GetOnlyNewPubs,char *Query);
static long Soc_GetLastPubCodFromSession (void);
static void Soc_UpdateLastPubCodIntoSession (void);
static void Soc_DropTemporaryTableWithPubCods (void);
static void Soc_ShowTimeline (const char *Query,const char *Title);
static void Soc_ShowRecentTimeline (const char *Query);
static void Soc_GetDataOfSocialPublishingFromRow (MYSQL_ROW row,struct SocialPublishing *SocPub);
static void Soc_PutLinkToViewRecentPublishings (void);
static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
const struct SocialNote *SocNot,
bool ShowAlone,
bool ViewTopLine);
bool ViewTopLine,
const char *Style);
static void Soc_WriteDateTime (time_t TimeUTC);
static void Soc_GetAndWriteSocialPost (long PstCod);
static void Soc_PutFormGoToAction (const struct SocialNote *SocNot);
@ -280,58 +288,15 @@ void Soc_ShowTimelineGbl (void)
if (!Fol_GetNumFollowing (Gbl.Usrs.Me.UsrDat.UsrCod))
Lay_ShowAlert (Lay_INFO,Txt_You_dont_follow_any_user);
/***** Create temporary table with publishing codes *****/
sprintf (Query,"DROP TEMPORARY TABLE IF EXISTS pub_cods");
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not remove temporary tables");
sprintf (Query,"CREATE TEMPORARY TABLE pub_cods (PubCod BIGINT NOT NULL,UNIQUE INDEX(PubCod)) ENGINE=MEMORY"
" SELECT MIN(PubCod) AS PubCod"
" FROM social_timeline"
" WHERE PublisherCod IN"
" (SELECT '%ld'"
" UNION"
" SELECT FollowedCod FROM usr_follow WHERE FollowerCod='%ld')"
" GROUP BY NotCod"
" ORDER BY PubCod DESC LIMIT %u",
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
Soc_NUM_PUBS_IN_TIMELINE);
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not create temporary table");
/***** Build query to show timeline including the users I am following *****/
sprintf (Query,"SELECT PubCod,NotCod,PublisherCod,AuthorCod,UNIX_TIMESTAMP(TimePublish)"
" FROM social_timeline WHERE PubCod IN "
"(SELECT PubCod FROM pub_cods)"
" ORDER BY PubCod DESC");
/***** Build query to get timeline *****/
Soc_BuildQueryToGetTimelineGbl (false, // Do not get only new publishings
Query);
/***** Show timeline *****/
Soc_ShowTimeline (Query,Txt_Public_activity);
/***** Drop temporary table with publishing codes *****/
sprintf (Query,"DROP TEMPORARY TABLE IF EXISTS pub_cods");
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not remove temporary tables");
}
/*****************************************************************************/
/**** Get parameter with the more recent publishing code got from database ***/
/*****************************************************************************/
// This parameter is sent and receiveda again via AJAX
// As an alternative, it could be stored in database with the code of session
void Soc_GetParamLastPubCod (void)
{
char LongStr[1+10+1];
long LongNum;
/***** Get the more recent publishing code *****/
Gbl.Social.LastPubCod = 0;
Par_GetParToText ("LastPubCod",LongStr,1+10);
if (LongStr[0]) // Parameter "LastPubCod" available
if (sscanf (LongStr,"%ld",&LongNum) == 1)
Gbl.Social.LastPubCod = LongNum;
Soc_DropTemporaryTableWithPubCods ();
}
/*****************************************************************************/
@ -340,14 +305,124 @@ void Soc_GetParamLastPubCod (void)
void Soc_GetAndShowRecentTimelineGbl (void)
{
fprintf (Gbl.F.Out,"<li class=\"SOCIAL_PUB\">"
"PID = %lu; "
"Time = %s; "
"Gbl.Social.LastPubCod = %ld"
"</li>",
(unsigned long) Gbl.PID,
Gbl.Now.YYYYMMDDHHMMSS,
Gbl.Social.LastPubCod);
char Query[512];
/***** Build query to get timeline *****/
Soc_BuildQueryToGetTimelineGbl (true, // Get only new publishings
Query);
/***** Show recent timeline *****/
Soc_ShowRecentTimeline (Query);
/***** Drop temporary table with publishing codes *****/
Soc_DropTemporaryTableWithPubCods ();
}
/*****************************************************************************/
/************************ Build query to get timeline ************************/
/*****************************************************************************/
static void Soc_BuildQueryToGetTimelineGbl (bool GetOnlyNewPubs,char *Query)
{
char SubQuery[64];
long LastPubCod;
/****** Build subquery in order to get only the publishings
more recent than LastPubCod *****/
SubQuery[0] = '\0';
if (GetOnlyNewPubs)
{
LastPubCod = Soc_GetLastPubCodFromSession ();
if (LastPubCod > 0)
sprintf (SubQuery,"PubCod>'%ld' AND ",LastPubCod);
}
/***** Remove temporary table with publishing codes *****/
sprintf (Query,"DROP TEMPORARY TABLE IF EXISTS pub_cods");
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not remove temporary tables");
/***** Create temporary table with publishing codes *****/
sprintf (Query,"CREATE TEMPORARY TABLE pub_cods"
" (PubCod BIGINT NOT NULL,UNIQUE INDEX(PubCod)) ENGINE=MEMORY"
" SELECT MIN(PubCod) AS PubCod"
" FROM social_timeline"
" WHERE %sPublisherCod IN"
" (SELECT '%ld'"
" UNION"
" SELECT FollowedCod FROM usr_follow WHERE FollowerCod='%ld')"
" GROUP BY NotCod"
" ORDER BY PubCod DESC LIMIT %u",
SubQuery,
Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.Usrs.Me.UsrDat.UsrCod,
Soc_NUM_PUBS_IN_TIMELINE);
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not create temporary table");
/***** Update last publishing code into session for next refresh *****/
// Do this inmediately after getting the publishings codes
Soc_UpdateLastPubCodIntoSession ();
/***** Build query to show timeline including the users I am following *****/
sprintf (Query,"SELECT PubCod,NotCod,PublisherCod,AuthorCod,UNIX_TIMESTAMP(TimePublish)"
" FROM social_timeline WHERE PubCod IN "
"(SELECT PubCod FROM pub_cods)"
" ORDER BY PubCod DESC");
}
/*****************************************************************************/
/******** Get last publishing code of last refresh stored in session *********/
/*****************************************************************************/
static long Soc_GetLastPubCodFromSession (void)
{
char Query[128+Ses_LENGTH_SESSION_ID];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
long LastPubCod;
/***** Get last page of received/sent messages from database *****/
sprintf (Query,"SELECT LastPubCod FROM sessions WHERE SessionId='%s'",
Gbl.Session.Id);
if (DB_QuerySELECT (Query,&mysql_res,"can not get last publishing code") != 1)
Lay_ShowErrorAndExit ("Error when getting last publishing code.");
/***** Get last publishing code *****/
row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&LastPubCod) != 1)
LastPubCod = 0;
return LastPubCod;
}
/*****************************************************************************/
/*********************** Update last publishing code *************************/
/*****************************************************************************/
static void Soc_UpdateLastPubCodIntoSession (void)
{
char Query[128+Ses_LENGTH_SESSION_ID];
/***** Update last publishing code *****/
sprintf (Query,"UPDATE sessions"
" SET LastPubCod=(SELECT MAX(PubCod) FROM social_timeline)"
" WHERE SessionId='%s'",
Gbl.Session.Id);
DB_QueryUPDATE (Query,"can not update last page of messages");
}
/*****************************************************************************/
/**************** Drop temporary table with publishing codes *****************/
/*****************************************************************************/
static void Soc_DropTemporaryTableWithPubCods (void)
{
char Query[128];
sprintf (Query,"DROP TEMPORARY TABLE IF EXISTS pub_cods");
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not remove temporary tables");
}
/*****************************************************************************/
@ -378,12 +453,12 @@ static void Soc_ShowTimeline (const char *Query,const char *Title)
Gbl.Usrs.Other.UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod) // It's me
Soc_PutHiddenFormToWriteNewPost ();
/***** Hidden list where insert new publishings via AJAX *****/
/***** Hidden div where insert new publishings via AJAX *****/
Soc_PutLinkToViewRecentPublishings ();
fprintf (Gbl.F.Out,"<ul id=\"recent_timeline\"></ul>");
fprintf (Gbl.F.Out,"<ul id=\"recent_timeline_list\"></ul>");
/***** List publishings in timeline one by one *****/
fprintf (Gbl.F.Out,"<ul id=\"timeline\" class=\"LIST_LEFT\">");
fprintf (Gbl.F.Out,"<ul id=\"timeline_list\" class=\"LIST_LEFT\">");
for (NumPub = 0;
NumPub < NumPublishings;
NumPub++)
@ -392,15 +467,12 @@ static void Soc_ShowTimeline (const char *Query,const char *Title)
row = mysql_fetch_row (mysql_res);
Soc_GetDataOfSocialPublishingFromRow (row,&SocPub);
if (NumPub == 0) // The more recent publishing
Gbl.Social.LastPubCod = SocPub.PubCod; // Last publishing code got from database
/* Get data of social note */
SocNot.NotCod = SocPub.NotCod;
Soc_GetDataOfSocialNoteByCod (&SocNot);
/* Write social note */
Soc_WriteSocialNote (&SocPub,&SocNot,false,true);
Soc_WriteSocialNote (&SocPub,&SocNot,false,true,NULL);
}
fprintf (Gbl.F.Out,"</ul>");
@ -412,12 +484,43 @@ static void Soc_ShowTimeline (const char *Query,const char *Title)
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
/***** Initialize javascript global variable with the code of the last punlishing *****/
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">\n"
" LastPubCod = \"%ld\";\n"
"</script>\n",
Gbl.Social.LastPubCod);
/*****************************************************************************/
/************** Show recent social activity (recent timeline) ****************/
/*****************************************************************************/
static void Soc_ShowRecentTimeline (const char *Query)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned long NumPublishings;
unsigned long NumPub;
struct SocialPublishing SocPub;
struct SocialNote SocNot;
/***** Get timeline from database *****/
NumPublishings = DB_QuerySELECT (Query,&mysql_res,"can not get social notes");
/***** List recent timeline *****/
for (NumPub = 0;
NumPub < NumPublishings;
NumPub++)
{
/* Get data of social publishing */
row = mysql_fetch_row (mysql_res);
Soc_GetDataOfSocialPublishingFromRow (row,&SocPub);
/* Get data of social note */
SocNot.NotCod = SocPub.NotCod;
Soc_GetDataOfSocialNoteByCod (&SocNot);
/* Write social note */
Soc_WriteSocialNote (&SocPub,&SocNot,false,true,"background:yellow;");
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
}
/*****************************************************************************/
@ -450,7 +553,8 @@ static void Soc_PutLinkToViewRecentPublishings (void)
static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
const struct SocialNote *SocNot,
bool ShowAlone, // Social note is shown alone, not in a list
bool ViewTopLine) // Separate with a top line from previous social note
bool ViewTopLine, // Separate with a top line from previous social note
const char *Style)
{
extern const char *Txt_Forum;
extern const char *Txt_Course;
@ -480,6 +584,8 @@ static void Soc_WriteSocialNote (const struct SocialPublishing *SocPub,
fprintf (Gbl.F.Out,"<li");
if (!ShowAlone && ViewTopLine)
fprintf (Gbl.F.Out," class=\"SOCIAL_PUB\"");
if (Style)
fprintf (Gbl.F.Out," style=\"%s\"",Style);
fprintf (Gbl.F.Out,">");
if (SocPub->PubCod <= 0 ||
@ -1823,7 +1929,7 @@ static void Soc_ShareSocialNote (void)
Lay_ShowAlert (Lay_SUCCESS,Txt_SOCIAL_PUBLISHING_Shared);
/***** Show the social note just shared *****/
Soc_WriteSocialNote (&SocPub,&SocNot,true,false);
Soc_WriteSocialNote (&SocPub,&SocNot,true,false,NULL);
}
}
@ -1902,7 +2008,7 @@ static void Soc_UnshareSocialPublishing (void)
/***** Show the social note corresponding
to the publishing just unshared *****/
Soc_WriteSocialNote (&SocPub,&SocNot,true,false);
Soc_WriteSocialNote (&SocPub,&SocNot,true,false,NULL);
}
}
@ -1990,7 +2096,7 @@ static void Soc_RequestRemovalSocialNote (void)
Lay_ShowAlert (Lay_WARNING,Txt_Do_you_really_want_to_remove_the_following_comment);
/* Show social note */
Soc_WriteSocialNote (&SocPub,&SocNot,true,false);
Soc_WriteSocialNote (&SocPub,&SocNot,true,false,NULL);
/***** Form to ask for confirmation to remove this social post *****/
/* Start form */

View File

@ -83,7 +83,6 @@ typedef enum
void Soc_ShowTimelineUsr (void);
void Soc_ShowTimelineGbl (void);
void Soc_GetParamLastPubCod (void);
void Soc_GetAndShowRecentTimelineGbl (void);
void Soc_StoreAndPublishSocialNote (Soc_NoteType_t NoteType,long Cod);

View File

@ -2735,7 +2735,7 @@ static unsigned Svy_GetQstIndFromQstCod (long QstCod)
static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod)
{
char Query[512];
char Query[128];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
unsigned QstInd = 0;