Version 20.53: Mar 29, 2021 Code refactoring in database selects.

This commit is contained in:
acanas 2021-03-29 16:38:56 +02:00
parent 9af1bbaa51
commit b889e97639
29 changed files with 1751 additions and 1381 deletions

View File

@ -600,13 +600,14 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/
#define Log_PLATFORM_VERSION "SWAD 20.52 (2021-03-28)"
#define Log_PLATFORM_VERSION "SWAD 20.53 (2021-03-29)"
#define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.53: Mar 29, 2021 Code refactoring in database selects. (309473 lines)
Version 20.52: Mar 28, 2021 Code refactoring in database selects. (309103 lines)
Version 20.51.49: Mar 26, 2021 User IDs database table renamed. (308816 lines)
1 change necessary in database:

View File

@ -306,7 +306,8 @@ void Mch_ListMatches (struct Gam_Games *Games,
{
if (asprintf (&SubQuery," AND"
" (MchCod NOT IN"
" (SELECT MchCod FROM mch_groups)"
" (SELECT MchCod"
" FROM mch_groups)"
" OR"
" MchCod IN"
" (SELECT mch_groups.MchCod"
@ -322,7 +323,8 @@ void Mch_ListMatches (struct Gam_Games *Games,
Lay_NotEnoughMemoryExit ();
/* Make query */
NumMatches = (unsigned) DB_QuerySELECT (&mysql_res,"can not get matches",
NumMatches = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get matches",
"SELECT MchCod," // row[ 0]
"GamCod," // row[ 1]
"UsrCod," // row[ 2]
@ -410,7 +412,7 @@ void Mch_GetDataOfMatchByCod (struct Mch_Match *Match)
"SELECT MchCod," // row[ 0]
"GamCod," // row[ 1]
"UsrCod," // row[ 2]
"UNIX_TIMESTAMP(StartTime),"// row[ 3]
"UNIX_TIMESTAMP(StartTime)," // row[ 3]
"UNIX_TIMESTAMP(EndTime)," // row[ 4]
"Title," // row[ 5]
"QstInd," // row[ 6]
@ -423,7 +425,8 @@ void Mch_GetDataOfMatchByCod (struct Mch_Match *Match)
" FROM mch_matches"
" WHERE MchCod=%ld"
" AND GamCod IN" // Extra check
" (SELECT GamCod FROM gam_games"
" (SELECT GamCod"
" FROM gam_games"
" WHERE CrsCod='%ld')",
Match->MchCod,
Gbl.Hierarchy.Crs.CrsCod);
@ -1916,8 +1919,10 @@ void Mch_GetIndexes (long MchCod,unsigned QstInd,
if (!DB_QuerySELECT (&mysql_res,"can not get data of a question",
"SELECT Indexes" // row[0]
" FROM mch_indexes"
" WHERE MchCod=%ld AND QstInd=%u",
MchCod,QstInd))
" WHERE MchCod=%ld"
" AND QstInd=%u",
MchCod,
QstInd))
Lay_ShowErrorAndExit ("No indexes found for a question.");
row = mysql_fetch_row (mysql_res);
@ -2067,11 +2072,14 @@ static void Mch_GetElapsedTimeInQuestion (const struct Mch_Match *Match,
unsigned NumRows;
/***** Query database *****/
NumRows = (unsigned) DB_QuerySELECT (&mysql_res,"can not get elapsed time",
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get elapsed time",
"SELECT ElapsedTime"
" FROM mch_times"
" WHERE MchCod=%ld AND QstInd=%u",
Match->MchCod,Match->Status.QstInd);
" WHERE MchCod=%ld"
" AND QstInd=%u",
Match->MchCod,
Match->Status.QstInd);
/***** Get elapsed time from query result *****/
Mch_GetElapsedTime (NumRows,mysql_res,Time);
@ -2091,9 +2099,11 @@ static void Mch_GetElapsedTimeInMatch (const struct Mch_Match *Match,
unsigned NumRows;
/***** Query database *****/
NumRows = (unsigned) DB_QuerySELECT (&mysql_res,"can not get elapsed time",
NumRows = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get elapsed time",
"SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ElapsedTime)))"
" FROM mch_times WHERE MchCod=%ld",
" FROM mch_times"
" WHERE MchCod=%ld",
Match->MchCod);
/***** Get elapsed time from query result *****/
@ -2480,9 +2490,10 @@ unsigned Mch_GetNumMchsInGame (long GamCod)
return 0; // ...has no matches
/***** Get number of matches in a game from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of matches of a game",
"SELECT COUNT(*) FROM mch_matches"
return (unsigned)
DB_QueryCOUNT ("can not get number of matches of a game",
"SELECT COUNT(*)"
" FROM mch_matches"
" WHERE GamCod=%ld",
GamCod);
}
@ -2498,11 +2509,14 @@ unsigned Mch_GetNumUnfinishedMchsInGame (long GamCod)
return 0; // ...has no matches
/***** Get number of matches in a game from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of unfinished matches of a game",
"SELECT COUNT(*) FROM mch_matches"
" WHERE GamCod=%ld AND Showing<>'%s'",
GamCod,Mch_ShowingStringsDB[Mch_END]);
return (unsigned)
DB_QueryCOUNT ("can not get number of unfinished matches of a game",
"SELECT COUNT(*)"
" FROM mch_matches"
" WHERE GamCod=%ld"
" AND Showing<>'%s'",
GamCod,
Mch_ShowingStringsDB[Mch_END]);
}
/*****************************************************************************/
@ -2517,11 +2531,12 @@ bool Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
/***** Check if I belong to any of the groups
associated to the match *****/
return (DB_QueryCOUNT ("can not check if I can play a match",
"SELECT COUNT(*) FROM mch_matches"
"SELECT COUNT(*)"
" FROM mch_matches"
" WHERE MchCod=%ld"
" AND"
"(MchCod NOT IN"
" (SELECT MchCod FROM mch_groups)"
" AND (MchCod NOT IN"
" (SELECT MchCod"
" FROM mch_groups)"
" OR"
" MchCod IN"
" (SELECT mch_groups.MchCod"
@ -2529,7 +2544,8 @@ bool Mch_CheckIfICanPlayThisMatchBasedOnGrps (const struct Mch_Match *Match)
"mch_groups"
" WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=mch_groups.GrpCod))",
Match->MchCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
Match->MchCod,
Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
break;
case Rol_NET:
/***** Only if I am the creator *****/
@ -3489,9 +3505,8 @@ static void Mch_ShowMatchScore (const struct Mch_Match *Match)
/***** Get maximum number of users *****/
if (DB_QuerySELECT (&mysql_res,"can not get max users",
"SELECT MAX(NumUsrs)"
" FROM "
"(SELECT COUNT(*) AS NumUsrs" // row[1]
"SELECT MAX(NumUsrs)" // row[1]
" FROM (SELECT COUNT(*) AS NumUsrs"
" FROM mch_results"
" WHERE MchCod=%ld"
" GROUP BY Score"
@ -3832,7 +3847,8 @@ static bool Mch_GetIfMatchIsBeingPlayed (long MchCod)
/***** Get if a match is being played or not *****/
return
(bool) (DB_QueryCOUNT ("can not get if match is being played",
"SELECT COUNT(*) FROM mch_playing"
"SELECT COUNT(*)"
" FROM mch_playing"
" WHERE MchCod=%ld",
MchCod) != 0);
}
@ -3846,7 +3862,8 @@ static void Mch_GetNumPlayers (struct Mch_Match *Match)
/***** Get number of players who are playing a match *****/
Match->Status.NumPlayers =
(unsigned) DB_QueryCOUNT ("can not get number of players",
"SELECT COUNT(*) FROM mch_players"
"SELECT COUNT(*)"
" FROM mch_players"
" WHERE MchCod=%ld",
Match->MchCod);
}
@ -4105,7 +4122,9 @@ void Mch_GetQstAnsFromDB (long MchCod,long UsrCod,unsigned QstInd,
" WHERE MchCod=%ld"
" AND UsrCod=%ld"
" AND QstInd=%u",
MchCod,UsrCod,QstInd);
MchCod,
UsrCod,
QstInd);
if (NumRows) // Answer found...
{
row = mysql_fetch_row (mysql_res);
@ -4340,11 +4359,14 @@ unsigned Mch_GetNumUsrsWhoAnsweredQst (long MchCod,unsigned QstInd)
{
/***** Get number of users who answered
a question in a match from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of users who answered a question",
"SELECT COUNT(*) FROM mch_answers"
" WHERE MchCod=%ld AND QstInd=%u",
MchCod,QstInd);
return (unsigned)
DB_QueryCOUNT ("can not get number of users who answered a question",
"SELECT COUNT(*)"
" FROM mch_answers"
" WHERE MchCod=%ld"
" AND QstInd=%u",
MchCod,
QstInd);
}
/*****************************************************************************/
@ -4355,11 +4377,16 @@ unsigned Mch_GetNumUsrsWhoHaveChosenAns (long MchCod,unsigned QstInd,unsigned An
{
/***** Get number of users who have chosen
an answer of a question from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of users who have chosen an answer",
"SELECT COUNT(*) FROM mch_answers"
" WHERE MchCod=%ld AND QstInd=%u AND AnsInd=%u",
MchCod,QstInd,AnsInd);
return (unsigned)
DB_QueryCOUNT ("can not get number of users who have chosen an answer",
"SELECT COUNT(*)"
" FROM mch_answers"
" WHERE MchCod=%ld"
" AND QstInd=%u"
" AND AnsInd=%u",
MchCod,
QstInd,
AnsInd);
}
/*****************************************************************************/
@ -4371,9 +4398,10 @@ static unsigned Mch_GetNumUsrsWhoHavePlayedMch (long MchCod)
/***** Get number of users who have played the match
(users who have a result for this match, even blank result)
from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of users who have played a match",
"SELECT COUNT(*) FROM mch_results"
return (unsigned)
DB_QueryCOUNT ("can not get number of users who have played a match",
"SELECT COUNT(*)"
" FROM mch_results"
" WHERE MchCod=%ld",
MchCod);
}

View File

@ -101,8 +101,10 @@ static void MchPrn_UpdateMyMatchPrintInDB (struct MchPrn_Print *Print)
{
Str_SetDecimalPointToUS (); // To print the floating point as a dot
if (DB_QueryCOUNT ("can not get if match result exists",
"SELECT COUNT(*) FROM mch_results"
" WHERE MchCod=%ld AND UsrCod=%ld",
"SELECT COUNT(*)"
" FROM mch_results"
" WHERE MchCod=%ld"
" AND UsrCod=%ld",
Print->MchCod,Print->UsrCod)) // Match print exists
/* Update result */
DB_QueryUPDATE ("can not update match result",
@ -111,7 +113,8 @@ static void MchPrn_UpdateMyMatchPrintInDB (struct MchPrn_Print *Print)
"NumQsts=%u,"
"NumQstsNotBlank=%u,"
"Score='%.15lg'"
" WHERE MchCod=%ld AND UsrCod=%ld",
" WHERE MchCod=%ld"
" AND UsrCod=%ld",
Print->NumQsts.All,
Print->NumQsts.NotBlank,
Print->Score,
@ -153,7 +156,9 @@ void MchPrn_GetMatchPrintDataByMchCodAndUsrCod (struct MchPrn_Print *Print)
"mch_results.NumQsts," // row[3]
"mch_results.NumQstsNotBlank," // row[4]
"mch_results.Score" // row[5]
" FROM mch_results,mch_matches,gam_games"
" FROM mch_results,"
"mch_matches,"
"gam_games"
" WHERE mch_results.MchCod=%ld"
" AND mch_results.UsrCod=%ld"
" AND mch_results.MchCod=mch_matches.MchCod"

View File

@ -402,14 +402,16 @@ static void MchRes_ListAllMchResultsInGam (struct Gam_Games *Games,long GamCod)
/***** Get all users who have answered any match question in this game *****/
NumUsrs = DB_QuerySELECT (&mysql_res,"can not get users in game",
"SELECT users.UsrCod FROM"
" (SELECT DISTINCT mch_results.UsrCod AS UsrCod" // row[0]
" FROM mch_results,mch_matches,gam_games"
"SELECT users.UsrCod" // row[0]
" FROM (SELECT DISTINCT mch_results.UsrCod AS UsrCod"
" FROM mch_results,"
"mch_matches,"
"gam_games"
" WHERE mch_matches.GamCod=%ld"
" AND mch_matches.MchCod=mch_results.MchCod"
" AND mch_matches.GamCod=gam_games.GamCod"
" AND gam_games.CrsCod=%ld)" // Extra check
" AS users,usr_data"
" AND gam_games.CrsCod=%ld) AS users," // Extra check
"usr_data"
" WHERE users.UsrCod=usr_data.UsrCod"
" ORDER BY usr_data.Surname1,"
"usr_data.Surname2,"
@ -496,14 +498,16 @@ static void MchRes_ListAllMchResultsInMch (struct Gam_Games *Games,long MchCod)
/***** Get all users who have answered any match question in this game *****/
NumUsrs = DB_QuerySELECT (&mysql_res,"can not get users in match",
"SELECT users.UsrCod FROM"
" (SELECT mch_results.UsrCod AS UsrCod" // row[0]
" FROM mch_results,mch_matches,gam_games"
"SELECT users.UsrCod"
" FROM (SELECT mch_results.UsrCod AS UsrCod" // row[0]
" FROM mch_results,"
"mch_matches,"
"gam_games"
" WHERE mch_results.MchCod=%ld"
" AND mch_results.MchCod=mch_matches.MchCod"
" AND mch_matches.GamCod=gam_games.GamCod"
" AND gam_games.CrsCod=%ld)" // Extra check
" AS users,usr_data"
" AND gam_games.CrsCod=%ld) AS users," // Extra check
"usr_data"
" WHERE users.UsrCod=usr_data.UsrCod"
" ORDER BY usr_data.Surname1,"
"usr_data.Surname2,"
@ -851,7 +855,9 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
NumResults =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get matches results",
"SELECT mch_results.MchCod" // row[0]
" FROM mch_results,mch_matches,gam_games"
" FROM mch_results,"
"mch_matches,"
"gam_games"
" WHERE mch_results.UsrCod=%ld"
"%s" // Match subquery
" AND mch_results.MchCod=mch_matches.MchCod"

View File

@ -612,8 +612,11 @@ static void Msg_WriteFormSubjectAndContentMsgToUsrs (struct Msg_Messages *Messag
{
/* Get subject and content of message from database */
NumRows = DB_QuerySELECT (&mysql_res,"can not get message content",
"SELECT Subject,Content FROM msg_content"
" WHERE MsgCod=%ld",MsgCod);
"SELECT Subject," // row[0]
"Content" // row[1]
" FROM msg_content"
" WHERE MsgCod=%ld",
MsgCod);
/* Result should have a unique row */
if (NumRows != 1)
@ -1485,7 +1488,12 @@ void Msg_DelAllRecAndSntMsgsUsr (long UsrCod)
DB_QueryINSERT ("can not remove received messages",
"INSERT IGNORE INTO msg_rcv_deleted"
" (MsgCod,UsrCod,Notified,Open,Replied)"
" SELECT MsgCod,UsrCod,Notified,Open,Replied FROM msg_rcv"
" SELECT MsgCod,"
"UsrCod,"
"Notified,"
"Open,"
"Replied"
" FROM msg_rcv"
" WHERE UsrCod=%ld",
UsrCod);
@ -1499,8 +1507,12 @@ void Msg_DelAllRecAndSntMsgsUsr (long UsrCod)
DB_QueryINSERT ("can not remove sent messages",
"INSERT IGNORE INTO msg_snt_deleted"
" (MsgCod,CrsCod,UsrCod,CreatTime)"
" SELECT MsgCod,CrsCod,UsrCod,CreatTime"
" FROM msg_snt WHERE UsrCod=%ld",
" SELECT MsgCod,"
"CrsCod,"
"UsrCod,"
"CreatTime"
" FROM msg_snt"
" WHERE UsrCod=%ld",
UsrCod);
/* Delete message from msg_snt *****/
@ -1550,14 +1562,24 @@ static void Msg_MoveReceivedMsgToDeleted (long MsgCod,long UsrCod)
DB_QueryINSERT ("can not remove a received message",
"INSERT IGNORE INTO msg_rcv_deleted"
" (MsgCod,UsrCod,Notified,Open,Replied)"
" SELECT MsgCod,UsrCod,Notified,Open,Replied"
" FROM msg_rcv WHERE MsgCod=%ld AND UsrCod=%ld",
MsgCod,UsrCod);
" SELECT MsgCod,"
"UsrCod,"
"Notified,"
"Open,"
"Replied"
" FROM msg_rcv"
" WHERE MsgCod=%ld"
" AND UsrCod=%ld",
MsgCod,
UsrCod);
/* Delete message from msg_rcv *****/
DB_QueryDELETE ("can not remove a received message",
"DELETE FROM msg_rcv WHERE MsgCod=%ld AND UsrCod=%ld",
MsgCod,UsrCod);
"DELETE FROM msg_rcv"
" WHERE MsgCod=%ld"
" AND UsrCod=%ld",
MsgCod,
UsrCod);
/***** If message content is not longer necessary, move it to msg_content_deleted *****/
if (Msg_CheckIfSentMsgIsDeleted (MsgCod))
@ -1579,8 +1601,12 @@ static void Msg_MoveSentMsgToDeleted (long MsgCod)
DB_QueryINSERT ("can not remove a sent message",
"INSERT IGNORE INTO msg_snt_deleted"
" (MsgCod,CrsCod,UsrCod,CreatTime)"
" SELECT MsgCod,CrsCod,UsrCod,CreatTime"
" FROM msg_snt WHERE MsgCod=%ld",
" SELECT MsgCod,"
"CrsCod,"
"UsrCod,"
"CreatTime"
" FROM msg_snt"
" WHERE MsgCod=%ld",
MsgCod);
/* Delete message from msg_snt *****/
@ -1604,8 +1630,12 @@ static void Msg_MoveMsgContentToDeleted (long MsgCod)
DB_QueryINSERT ("can not remove the content of a message",
"INSERT IGNORE INTO msg_content_deleted"
" (MsgCod,Subject,Content,MedCod)"
" SELECT MsgCod,Subject,Content,MedCod"
" FROM msg_content WHERE MsgCod=%ld",
" SELECT MsgCod,"
"Subject,"
"Content,"
"MedCod"
" FROM msg_content"
" WHERE MsgCod=%ld",
MsgCod);
/* TODO: Messages in msg_content_deleted older than a certain time
@ -1628,9 +1658,16 @@ void Msg_MoveUnusedMsgsContentToDeleted (void)
DB_QueryINSERT ("can not remove the content of some messages",
"INSERT IGNORE INTO msg_content_deleted"
" (MsgCod,Subject,Content)"
" SELECT MsgCod,Subject,Content FROM msg_content"
" WHERE MsgCod NOT IN (SELECT MsgCod FROM msg_snt)"
" AND MsgCod NOT IN (SELECT DISTINCT MsgCod FROM msg_rcv)");
" SELECT MsgCod,"
"Subject,"
"Content"
" FROM msg_content"
" WHERE MsgCod NOT IN"
" (SELECT MsgCod"
" FROM msg_snt)"
" AND MsgCod NOT IN"
" (SELECT DISTINCT MsgCod"
" FROM msg_rcv)");
/* Messages in msg_content_deleted older than a certain time
should be deleted to ensure the protection of personal data */
@ -1638,8 +1675,12 @@ void Msg_MoveUnusedMsgsContentToDeleted (void)
/* Delete message from msg_content *****/
DB_QueryUPDATE ("can not remove the content of some messages",
"DELETE FROM msg_content"
" WHERE MsgCod NOT IN (SELECT MsgCod FROM msg_snt)"
" AND MsgCod NOT IN (SELECT DISTINCT MsgCod FROM msg_rcv)");
" WHERE MsgCod NOT IN"
" (SELECT MsgCod"
" FROM msg_snt)"
" AND MsgCod NOT IN"
" (SELECT DISTINCT MsgCod"
" FROM msg_rcv)");
}
/*****************************************************************************/
@ -1650,7 +1691,8 @@ static bool Msg_CheckIfSentMsgIsDeleted (long MsgCod)
{
/***** Get if the message code is in table of sent messages not deleted *****/
return (DB_QueryCOUNT ("can not check if a sent message is deleted",
"SELECT COUNT(*) FROM msg_snt"
"SELECT COUNT(*)"
" FROM msg_snt"
" WHERE MsgCod=%ld",
MsgCod) == 0); // The message has been deleted
// by its author when it is not present
@ -1666,7 +1708,8 @@ static bool Msg_CheckIfReceivedMsgIsDeletedForAllItsRecipients (long MsgCod)
/***** Get if the message code is in table of received messages not deleted *****/
return (DB_QueryCOUNT ("can not check if a received message"
" is deleted by all recipients",
"SELECT COUNT(*) FROM msg_rcv"
"SELECT COUNT(*)"
" FROM msg_rcv"
" WHERE MsgCod=%ld",
MsgCod) == 0); // The message has been deleted
// by all its recipients when it is not present
@ -1688,8 +1731,12 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
{
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod"
" FROM msg_rcv,"
"msg_snt,"
"usr_data"
" WHERE msg_rcv.UsrCod=%ld"
" AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
@ -1700,8 +1747,11 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
}
else
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod"
" FROM msg_rcv,"
"msg_snt"
" WHERE msg_rcv.UsrCod=%ld"
" AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -1713,8 +1763,10 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
{
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld AND msg_rcv.Open='N'"
if (asprintf (&SubQuery,"SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld"
" AND msg_rcv.Open='N'"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod,
@ -1723,8 +1775,10 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
}
else
{
if (asprintf (&SubQuery,"SELECT MsgCod FROM msg_rcv"
" WHERE UsrCod=%ld AND Open='N'",
if (asprintf (&SubQuery,"SELECT MsgCod"
" FROM msg_rcv"
" WHERE UsrCod=%ld"
" AND Open='N'",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit ();
}
@ -1733,7 +1787,8 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
if (Messages->FilterContent[0])
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of unread messages",
"SELECT COUNT(*) FROM msg_content"
"SELECT COUNT(*)"
" FROM msg_content"
" WHERE MsgCod IN (%s)"
" AND MATCH (Subject,Content) AGAINST ('%s')",
SubQuery,
@ -1741,7 +1796,8 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
else
NumMsgs =
(unsigned) DB_QueryCOUNT ("can not get number of unread messages",
"SELECT COUNT(*) FROM (%s) AS T",
"SELECT COUNT(*)"
" FROM (%s) AS T",
SubQuery);
free (SubQuery);
@ -1982,7 +2038,8 @@ static unsigned long Msg_GetNumUsrsBannedByMe (void)
{
/***** Get number of users I have banned *****/
return DB_QueryCOUNT ("can not get number of users you have banned",
"SELECT COUNT(*) FROM msg_banned"
"SELECT COUNT(*)"
" FROM msg_banned"
" WHERE ToUsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod);
}
@ -2023,14 +2080,18 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt,usr_data"
" FROM msg_rcv,"
"msg_snt,"
"usr_data"
" WHERE msg_rcv.UsrCod=%ld%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.UsrCod=usr_data.UsrCod%s)"
" UNION "
"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt_deleted,usr_data"
" 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"
@ -2042,14 +2103,18 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
else
{
if (asprintf (&SubQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt"
" WHERE msg_rcv.UsrCod=%ld%s"
" FROM msg_rcv,"
"msg_snt"
" WHERE msg_rcv.UsrCod=%ld"
"%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.CrsCod=%ld)"
" UNION "
"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt_deleted"
" WHERE msg_rcv.UsrCod=%ld%s"
" 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,Messages->FilterCrsCod,
@ -2061,18 +2126,24 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"(SELECT DISTINCT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv,usr_data"
" FROM msg_snt,"
"msg_rcv,"
"usr_data"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.CrsCod=%ld"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.UsrCod=usr_data.UsrCod%s)"
" AND msg_rcv.UsrCod=usr_data.UsrCod"
"%s)"
" UNION "
"(SELECT DISTINCT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv_deleted,usr_data"
" 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)",
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod"
"%s)",
UsrCod,Messages->FilterCrsCod,FilterFromToSubquery,
UsrCod,Messages->FilterCrsCod,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit ();
@ -2081,7 +2152,8 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
{
if (asprintf (&SubQuery,"SELECT MsgCod"
" FROM msg_snt"
" WHERE UsrCod=%ld AND CrsCod=%ld",
" WHERE UsrCod=%ld"
" AND CrsCod=%ld",
UsrCod,Messages->FilterCrsCod) < 0)
Lay_NotEnoughMemoryExit ();
}
@ -2098,16 +2170,24 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
StrUnreadMsg = (Messages->ShowOnlyUnreadMsgs ? " AND msg_rcv.Open='N'" :
"");
if (asprintf (&SubQuery,"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s"
" FROM msg_rcv,"
"msg_snt,"
"usr_data"
" WHERE msg_rcv.UsrCod=%ld"
"%s"
" AND msg_rcv.MsgCod=msg_snt.MsgCod"
" AND msg_snt.UsrCod=usr_data.UsrCod%s)"
" AND msg_snt.UsrCod=usr_data.UsrCod"
"%s)"
" UNION "
"(SELECT msg_rcv.MsgCod"
" FROM msg_rcv,msg_snt_deleted,usr_data"
" WHERE msg_rcv.UsrCod=%ld%s"
" 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)",
" AND msg_snt_deleted.UsrCod=usr_data.UsrCod"
"%s)",
UsrCod,StrUnreadMsg,FilterFromToSubquery,
UsrCod,StrUnreadMsg,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit ();
@ -2118,7 +2198,8 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
"");
if (asprintf (&SubQuery,"SELECT MsgCod"
" FROM msg_rcv"
" WHERE UsrCod=%ld%s",
" WHERE UsrCod=%ld"
"%s",
UsrCod,StrUnreadMsg) < 0)
Lay_NotEnoughMemoryExit ();
}
@ -2127,13 +2208,17 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
if (FilterFromToSubquery[0])
{
if (asprintf (&SubQuery,"(SELECT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv,usr_data"
" FROM msg_snt,"
"msg_rcv,"
"usr_data"
" WHERE msg_snt.UsrCod=%ld"
" AND msg_snt.MsgCod=msg_rcv.MsgCod"
" AND msg_rcv.UsrCod=usr_data.UsrCod%s)"
" UNION "
"(SELECT msg_snt.MsgCod"
" FROM msg_snt,msg_rcv_deleted,usr_data"
" 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)",
@ -2159,10 +2244,13 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
NumMsgs = DB_QuerySELECT (mysql_res,"can not get messages",
"SELECT MsgCod"
" FROM msg_content"
" WHERE MsgCod IN (SELECT MsgCod FROM (%s) AS M)"
" WHERE MsgCod IN"
" (SELECT MsgCod"
" FROM (%s) AS M)"
" AND MATCH (Subject,Content) AGAINST ('%s')"
" ORDER BY MsgCod DESC", // End the query ordering the result from most recent message to oldest
SubQuery,Messages->FilterContent);
SubQuery,
Messages->FilterContent);
else
NumMsgs = DB_QuerySELECT (mysql_res,"can not get messages",
"%s"
@ -2182,9 +2270,8 @@ static unsigned long Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messa
unsigned Msg_GetNumMsgsSentByTchsCrs (long CrsCod)
{
/***** Get the number of unique messages sent by any teacher from this course *****/
return
(unsigned) DB_QueryCOUNT ("can not get the number of messages"
" sent by teachers",
return (unsigned)
DB_QueryCOUNT ("can not get the number of messages sent by teachers",
"SELECT COUNT(*)"
" FROM msg_snt,"
"crs_users"
@ -2192,7 +2279,9 @@ unsigned Msg_GetNumMsgsSentByTchsCrs (long CrsCod)
" AND crs_users.CrsCod=%ld"
" AND crs_users.Role=%u"
" AND msg_snt.UsrCod=crs_users.UsrCod",
CrsCod,CrsCod,(unsigned) Rol_TCH);
CrsCod,
CrsCod,
(unsigned) Rol_TCH);
}
/*****************************************************************************/
@ -2204,10 +2293,12 @@ unsigned long Msg_GetNumMsgsSentByUsr (long UsrCod)
/***** Get the number of unique messages sent by any teacher from this course *****/
return DB_QueryCOUNT ("can not get the number of messages sent by a user",
"SELECT"
" (SELECT COUNT(*) FROM msg_snt"
" (SELECT COUNT(*)"
" FROM msg_snt"
" WHERE UsrCod=%ld)"
" +"
" (SELECT COUNT(*) FROM msg_snt_deleted"
" (SELECT COUNT(*)"
" FROM msg_snt_deleted"
" WHERE UsrCod=%ld)",
UsrCod,
UsrCod);
@ -2951,16 +3042,22 @@ static void Msg_GetMsgSntData (long MsgCod,long *CrsCod,long *UsrCod,
/***** Get data of message from table msg_snt *****/
*Deleted = false;
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a message",
"SELECT CrsCod,UsrCod,UNIX_TIMESTAMP(CreatTime)"
" FROM msg_snt WHERE MsgCod=%ld",
"SELECT CrsCod," // row[0]
"UsrCod," // row[1]
"UNIX_TIMESTAMP(CreatTime)" // row[2]
" FROM msg_snt"
" WHERE MsgCod=%ld",
MsgCod);
if (NumRows == 0) // If not result ==> sent message is deleted
{
/***** Get data of message from table msg_snt_deleted *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a message",
"SELECT CrsCod,UsrCod,UNIX_TIMESTAMP(CreatTime)"
" FROM msg_snt_deleted WHERE MsgCod=%ld",
"SELECT CrsCod," // row[0]
"UsrCod," // row[1]
"UNIX_TIMESTAMP(CreatTime)" // row[2]
" FROM msg_snt_deleted"
" WHERE MsgCod=%ld",
MsgCod);
*Deleted = true;
@ -3000,7 +3097,8 @@ static void Msg_GetMsgSubject (long MsgCod,char Subject[Cns_MAX_BYTES_SUBJECT +
/***** Get subject of message from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get the subject of a message",
"SELECT Subject FROM msg_content"
"SELECT Subject"
" FROM msg_content"
" WHERE MsgCod=%ld",
MsgCod) == 1) // Result should have a unique row
{
@ -3030,7 +3128,8 @@ static void Msg_GetMsgContent (long MsgCod,char Content[Cns_MAX_BYTES_LONG_TEXT
NumRows = DB_QuerySELECT (&mysql_res,"can not get the content of a message",
"SELECT Content," // row[0]
"MedCod" // row[1]
" FROM msg_content WHERE MsgCod=%ld",
" FROM msg_content"
" WHERE MsgCod=%ld",
MsgCod);
/***** Result should have a unique row *****/
@ -3064,9 +3163,12 @@ static void Msg_GetStatusOfSentMsg (long MsgCod,bool *Expanded)
/***** Get if sent message has been replied/expanded from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get if a sent message"
" has been replied/expanded",
"SELECT Expanded FROM msg_snt"
" WHERE MsgCod=%ld AND UsrCod=%ld",
MsgCod,Gbl.Usrs.Me.UsrDat.UsrCod);
"SELECT Expanded"
" FROM msg_snt"
" WHERE MsgCod=%ld"
" AND UsrCod=%ld",
MsgCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Result should have a unique row *****/
if (NumRows != 1)
@ -3095,9 +3197,14 @@ static void Msg_GetStatusOfReceivedMsg (long MsgCod,bool *Open,bool *Replied,boo
/***** Get if received message has been replied/expanded from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get if a received message"
" has been replied/expanded",
"SELECT Open,Replied,Expanded FROM msg_rcv"
" WHERE MsgCod=%ld AND UsrCod=%ld",
MsgCod,Gbl.Usrs.Me.UsrDat.UsrCod);
"SELECT Open,"
"Replied,"
"Expanded"
" FROM msg_rcv"
" WHERE MsgCod=%ld"
" AND UsrCod=%ld",
MsgCod,
Gbl.Usrs.Me.UsrDat.UsrCod);
/***** Result should have a unique row *****/
if (NumRows != 1)
@ -3320,7 +3427,9 @@ void Msg_GetNotifMessage (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
/***** Get subject of message from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get subject and content"
" of a message",
"SELECT Subject,Content FROM msg_content"
"SELECT Subject,"
"Content"
" FROM msg_content"
" WHERE MsgCod=%ld",
MsgCod) == 1) // Result should have a unique row
{
@ -3658,12 +3767,15 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
NumRecipientsTotal =
(unsigned) DB_QueryCOUNT ("can not get number of recipients",
"SELECT "
"(SELECT COUNT(*) FROM msg_rcv"
"(SELECT COUNT(*)"
" FROM msg_rcv"
" WHERE MsgCod=%ld)"
" + "
"(SELECT COUNT(*) FROM msg_rcv_deleted"
"(SELECT COUNT(*)"
" FROM msg_rcv_deleted"
" WHERE MsgCod=%ld)",
MsgCod,MsgCod);
MsgCod,
MsgCod);
/***** Get recipients of a message from database *****/
NumRecipientsKnown =
@ -3674,7 +3786,8 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
"usr_data.Surname1 AS S1,"
"usr_data.Surname2 AS S2,"
"usr_data.FirstName AS FN"
" FROM msg_rcv,usr_data"
" FROM msg_rcv,"
"usr_data"
" WHERE msg_rcv.MsgCod=%ld"
" AND msg_rcv.UsrCod=usr_data.UsrCod)"
" UNION "
@ -3684,11 +3797,15 @@ static void Msg_WriteMsgTo (struct Msg_Messages *Messages,long MsgCod)
"usr_data.Surname1 AS S1,"
"usr_data.Surname2 AS S2,"
"usr_data.FirstName AS FN"
" FROM msg_rcv_deleted,usr_data"
" FROM msg_rcv_deleted,"
"usr_data"
" WHERE msg_rcv_deleted.MsgCod=%ld"
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod)"
" ORDER BY S1,S2,FN",
MsgCod,MsgCod);
" ORDER BY S1,"
"S2,"
"FN",
MsgCod,
MsgCod);
/***** Check number of recipients *****/
if (NumRecipientsTotal)
@ -4001,8 +4118,10 @@ bool Msg_CheckIfUsrIsBanned (long FromUsrCod,long ToUsrCod)
{
/***** Get if FromUsrCod is banned by ToUsrCod *****/
return (DB_QueryCOUNT ("can not check if a user is banned",
"SELECT COUNT(*) FROM msg_banned"
" WHERE FromUsrCod=%ld AND ToUsrCod=%ld",
"SELECT COUNT(*)"
" FROM msg_banned"
" WHERE FromUsrCod=%ld"
" AND ToUsrCod=%ld",
FromUsrCod,ToUsrCod) != 0);
}
@ -4037,7 +4156,8 @@ void Msg_ListBannedUsrs (void)
/***** Get my banned users *****/
NumUsrs = (unsigned) DB_QuerySELECT (&mysql_res,"can not get banned users",
"SELECT msg_banned.FromUsrCod"
" FROM msg_banned,usr_data"
" FROM msg_banned,"
"usr_data"
" WHERE msg_banned.ToUsrCod=%ld"
" AND msg_banned.FromUsrCod=usr_data.UsrCod"
" ORDER BY usr_data.Surname1,"

View File

@ -225,9 +225,12 @@ void Net_ShowWebsAndSocialNets (const struct UsrData *UsrDat)
{
/***** Check if exists the web / social network for this user *****/
if (DB_QuerySELECT (&mysql_res,"can not get user's web / social network",
"SELECT URL FROM usr_webs"
" WHERE UsrCod=%ld AND Web='%s'",
UsrDat->UsrCod,Net_WebsAndSocialNetworksDB[NumURL]))
"SELECT URL"
" FROM usr_webs"
" WHERE UsrCod=%ld"
" AND Web='%s'",
UsrDat->UsrCod,
Net_WebsAndSocialNetworksDB[NumURL]))
{
/* Get URL */
row = mysql_fetch_row (mysql_res);
@ -301,8 +304,10 @@ void Net_ShowFormMyWebsAndSocialNets (void)
{
/***** Get user's web / social network from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get user's web / social network",
"SELECT URL FROM usr_webs"
" WHERE UsrCod=%ld AND Web='%s'",
"SELECT URL"
" FROM usr_webs"
" WHERE UsrCod=%ld"
" AND Web='%s'",
Gbl.Usrs.Me.UsrDat.UsrCod,
Net_WebsAndSocialNetworksDB[NumURL]))
{
@ -461,7 +466,8 @@ void Net_ShowWebAndSocialNetworksStats (void)
"COUNT(*) AS N" // row[1]
" FROM usr_webs"
" GROUP BY Web"
" ORDER BY N DESC,Web");
" ORDER BY N DESC,"
"Web");
break;
case Hie_Lvl_CTY:
NumRows = (unsigned)

View File

@ -121,8 +121,11 @@ bool Nck_GetNicknameFromUsrCod (long UsrCod,
/***** Get current (last updated) user's nickname from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get nickname",
"SELECT Nickname FROM usr_nicknames"
" WHERE UsrCod=%ld ORDER BY CreatTime DESC LIMIT 1",
"SELECT Nickname"
" FROM usr_nicknames"
" WHERE UsrCod=%ld"
" ORDER BY CreatTime DESC"
" LIMIT 1",
UsrCod))
{
/* Get nickname */
@ -166,7 +169,8 @@ long Nck_GetUsrCodFromNickname (const char *Nickname)
/* Check if user code from table usr_nicknames is also in table usr_data */
if (DB_QuerySELECT (&mysql_res,"can not get user's code",
"SELECT usr_nicknames.UsrCod"
" FROM usr_nicknames,usr_data"
" FROM usr_nicknames,"
"usr_data"
" WHERE usr_nicknames.Nickname='%s'"
" AND usr_nicknames.UsrCod=usr_data.UsrCod",
NickWithoutArr))
@ -237,7 +241,8 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
/***** Get my nicknames *****/
NumNicks =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get nicknames of a user",
"SELECT Nickname FROM usr_nicknames"
"SELECT Nickname"
" FROM usr_nicknames"
" WHERE UsrCod=%ld"
" ORDER BY CreatTime DESC",
UsrDat->UsrCod);
@ -577,14 +582,20 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat)
{
/***** Check if the new nickname matches any of my old nicknames *****/
if (!DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE UsrCod=%ld AND Nickname='%s'",
UsrDat->UsrCod,NewNickWithoutArr)) // No matches
"SELECT COUNT(*)"
" FROM usr_nicknames"
" WHERE UsrCod=%ld"
" AND Nickname='%s'",
UsrDat->UsrCod,
NewNickWithoutArr)) // No matches
/***** Check if the new nickname matches any of the nicknames of other users *****/
if (DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE Nickname='%s' AND UsrCod<>%ld",
NewNickWithoutArr,UsrDat->UsrCod)) // A nickname of another user is the same that user's nickname
"SELECT COUNT(*)"
" FROM usr_nicknames"
" WHERE Nickname='%s'"
" AND UsrCod<>%ld",
NewNickWithoutArr,
UsrDat->UsrCod)) // A nickname of another user is the same that user's nickname
Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID,
Txt_The_nickname_X_had_been_registered_by_another_user,
NewNickWithoutArr);

View File

@ -340,14 +340,16 @@ void Not_RemoveNotice (void)
" FROM not_notices"
" WHERE NotCod=%ld"
" AND CrsCod=%ld",
NotCod,Gbl.Hierarchy.Crs.CrsCod);
NotCod,
Gbl.Hierarchy.Crs.CrsCod);
/* Remove notice */
DB_QueryDELETE ("can not remove notice",
"DELETE FROM not_notices"
" WHERE NotCod=%ld"
" AND CrsCod=%ld",
NotCod,Gbl.Hierarchy.Crs.CrsCod);
NotCod,
Gbl.Hierarchy.Crs.CrsCod);
/***** Mark possible notifications as removed *****/
Ntf_MarkNotifAsRemoved (Ntf_EVENT_NOTICE,NotCod);
@ -584,8 +586,10 @@ static void Not_GetDataAndShowNotice (long NotCod)
"Content," // row[2]
"Status" // row[3]
" FROM not_notices"
" WHERE NotCod=%ld AND CrsCod=%ld",
NotCod,Gbl.Hierarchy.Crs.CrsCod))
" WHERE NotCod=%ld"
" AND CrsCod=%ld",
NotCod,
Gbl.Hierarchy.Crs.CrsCod))
{
row = mysql_fetch_row (mysql_res);

View File

@ -1354,12 +1354,12 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" to be notified",
"SELECT DISTINCT(PublisherCod)" // row[0]
" FROM tml_pubs"
" WHERE NotCod="
"(SELECT NotCod"
" WHERE NotCod=(SELECT NotCod"
" FROM tml_pubs"
" WHERE PubCod=%ld)"
" AND PublisherCod<>%ld",
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
Cod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Ntf_EVENT_TL_FAV: // New favourite to one of my social notes or comments
case Ntf_EVENT_TL_SHARE: // New sharing of one of my social notes
@ -1404,11 +1404,12 @@ unsigned Ntf_StoreNotifyEventsToAllUsrs (Ntf_NotifyEvent_t NotifyEvent,long Cod)
" to be notified",
"SELECT DISTINCT(UsrCod)" // row[0]
" FROM for_posts"
" WHERE ThrCod = (SELECT ThrCod"
" WHERE ThrCod=(SELECT ThrCod"
" FROM for_posts"
" WHERE PstCod=%ld)"
" AND UsrCod<>%ld",
Cod,Gbl.Usrs.Me.UsrDat.UsrCod);
Cod,
Gbl.Usrs.Me.UsrDat.UsrCod);
break;
case Ntf_EVENT_MESSAGE: // This function should not be called in this case
return 0;

View File

@ -120,7 +120,7 @@ bool Pwd_CheckPendingPassword (void)
/***** Get pending password from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get pending password",
"SELECT PendingPassword"
"SELECT PendingPassword" // row[0]
" FROM usr_pending_passwd"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod))
@ -594,9 +594,12 @@ static unsigned Pwd_GetNumOtherUsrsWhoUseThisPassword (const char *EncryptedPass
/***** Get number of other users who use a password from database *****/
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not check if a password is trivial",
"SELECT COUNT(*) FROM usr_data"
" WHERE Password='%s'%s",
EncryptedPassword,SubQuery);
"SELECT COUNT(*)"
" FROM usr_data"
" WHERE Password='%s'"
"%s",
EncryptedPassword,
SubQuery);
/***** Free subquery *****/
if (UsrCod > 0)

View File

@ -1502,7 +1502,9 @@ void Pho_RemoveObsoleteStatDegrees (void)
{
DB_QueryDELETE ("can not remove old degrees from stats",
"DELETE FROM sta_degrees"
" WHERE DegCod NOT IN (SELECT DegCod FROM deg_degrees)");
" WHERE DegCod NOT IN"
" (SELECT DegCod"
" FROM deg_degrees)");
}
/*****************************************************************************/
@ -1520,7 +1522,8 @@ static long Pho_GetTimeAvgPhotoWasComputed (long DegCod)
NumRows = DB_QuerySELECT (&mysql_res,"can not get last time"
" an average photo was computed",
"SELECT MIN(UNIX_TIMESTAMP(TimeAvgPhoto))"
" FROM sta_degrees WHERE DegCod=%ld",
" FROM sta_degrees"
" WHERE DegCod=%ld",
DegCod);
if (NumRows == 1)
@ -1555,7 +1558,8 @@ static long Pho_GetTimeToComputeAvgPhoto (long DegCod)
/***** Get time to compute average photo from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get time to compute"
" average photo",
"SELECT TimeToComputeAvgPhoto FROM sta_degrees"
"SELECT TimeToComputeAvgPhoto" // row[0]
" FROM sta_degrees"
" WHERE DegCod=%ld",
DegCod);
@ -2100,10 +2104,12 @@ static void Pho_GetMaxStdsPerDegree (struct Pho_DegPhotos *DegPhotos)
/***** Get maximum number of students in a degree from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get maximum"
" number of students in a degree",
"SELECT MAX(NumStds),MAX(NumStdsWithPhoto),"
"MAX(NumStdsWithPhoto/NumStds)"
"SELECT MAX(NumStds)," // row[0]
"MAX(NumStdsWithPhoto)," // row[1]
"MAX(NumStdsWithPhoto/NumStds)" // row[2]
" FROM sta_degrees"
" WHERE Sex='all' AND NumStds>0");
" WHERE Sex='all'"
" AND NumStds>0");
/***** Count number of rows in result *****/
if (NumRows == 1)
@ -2395,10 +2401,13 @@ static void Pho_GetNumStdsInDegree (long DegCod,Usr_Sex_t Sex,int *NumStds,int *
/***** Get the number of students in a degree from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get the number of students"
" in a degree",
"SELECT NumStds,NumStdsWithPhoto"
"SELECT NumStds,"
"NumStdsWithPhoto"
" FROM sta_degrees"
" WHERE DegCod=%ld AND Sex='%s'",
DegCod,Usr_StringsSexDB[Sex]);
" WHERE DegCod=%ld"
" AND Sex='%s'",
DegCod,
Usr_StringsSexDB[Sex]);
if (NumRows == 0)
*NumStds = *NumStdsWithPhoto = -1;

View File

@ -464,9 +464,9 @@ void Plc_GetDataOfPlaceByCod (struct Plc_Place *Plc)
{
/***** Get data of a place from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get data of a place",
"(SELECT plc_places.ShortName,"
"plc_places.FullName,"
"COUNT(*)"
"(SELECT plc_places.ShortName," // row[0]
"plc_places.FullName," // row[1]
"COUNT(*)" // row[2]
" FROM plc_places,"
"ctr_centers"
" WHERE plc_places.PlcCod=%ld"
@ -474,9 +474,9 @@ void Plc_GetDataOfPlaceByCod (struct Plc_Place *Plc)
" AND ctr_centers.PlcCod=%ld"
" GROUP BY plc_places.PlcCod)"
" UNION "
"(SELECT ShortName,"
"FullName,"
"0"
"(SELECT ShortName," // row[0]
"FullName," // row[1]
"0" // row[2]
" FROM plc_places"
" WHERE PlcCod=%ld"
" AND PlcCod NOT IN"

View File

@ -591,7 +591,8 @@ static bool Plg_CheckIfPluginNameExists (const char *Name,long PlgCod)
/***** Get number of plugins with a name from database *****/
return (DB_QueryCOUNT ("can not check if the name of a plugin"
" already existed",
"SELECT COUNT(*) FROM plg_plugins"
"SELECT COUNT(*)"
" FROM plg_plugins"
" WHERE Name='%s'"
" AND PlgCod<>%ld",
Name,PlgCod) != 0);

View File

@ -887,10 +887,12 @@ static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName)
/***** Select number of rows with figure
greater than the figure of this user *****/
return DB_QueryCOUNT ("can not get ranking using a figure",
"SELECT COUNT(*)+1 FROM usr_figures"
"SELECT COUNT(*)+1"
" FROM usr_figures"
" WHERE UsrCod<>%ld" // Really not necessary here
" AND %s>"
"(SELECT %s FROM usr_figures WHERE UsrCod=%ld)",
" AND %s>(SELECT %s"
" FROM usr_figures"
" WHERE UsrCod=%ld)",
UsrCod,FieldName,FieldName,UsrCod);
}
@ -902,7 +904,8 @@ static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName)
{
/***** Select number of rows with values already calculated *****/
return DB_QueryCOUNT ("can not get number of users with a figure",
"SELECT COUNT(*) FROM usr_figures"
"SELECT COUNT(*)"
" FROM usr_figures"
" WHERE %s>=0",
FieldName);
}
@ -916,14 +919,12 @@ static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod)
/***** Select number of rows with number of clicks per day
greater than the clicks per day of this user *****/
return DB_QueryCOUNT ("can not get ranking using number of clicks per day",
"SELECT COUNT(*)+1 FROM"
" (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)"
" AS NumClicksPerDay"
"SELECT COUNT(*)+1"
" FROM (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay"
" FROM usr_figures"
" WHERE UsrCod<>%ld" // Necessary because the following comparison is not exact in floating point
" AND NumClicks>0"
" AND FirstClickTime>FROM_UNIXTIME(0))"
" AS TableNumClicksPerDay"
" AND FirstClickTime>FROM_UNIXTIME(0)) AS TableNumClicksPerDay"
" WHERE NumClicksPerDay>"
"(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)"
" FROM usr_figures"
@ -942,7 +943,8 @@ static unsigned long Prf_GetNumUsrsWithNumClicksPerDay (void)
/***** Select number of rows with values already calculated *****/
return DB_QueryCOUNT ("can not get number of users"
" with number of clicks per day",
"SELECT COUNT(*) FROM usr_figures"
"SELECT COUNT(*)"
" FROM usr_figures"
" WHERE NumClicks>0"
" AND FirstClickTime>FROM_UNIXTIME(0)");
}
@ -1056,7 +1058,8 @@ static void Prf_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod)
/***** Get first click from log table *****/
if (DB_QuerySELECT (&mysql_res,"can not get user's first click",
"SELECT UNIX_TIMESTAMP("
"(SELECT MIN(ClickTime) FROM log"
"(SELECT MIN(ClickTime)"
" FROM log"
" WHERE UsrCod=%ld)"
")",
UsrCod))
@ -1100,7 +1103,8 @@ static void Prf_GetNumClicksAndStoreAsUsrFigure (long UsrCod)
/***** Get number of clicks from database *****/
UsrFigures.NumClicks =
(long) DB_QueryCOUNT ("can not get number of clicks",
"SELECT COUNT(*) FROM log"
"SELECT COUNT(*)"
" FROM log"
" WHERE UsrCod=%ld",
UsrCod);
@ -1448,7 +1452,8 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
"UsrCod"
" LIMIT 100",
FieldName,
FieldName,FieldName);
FieldName,
FieldName);
break;
case Hie_Lvl_CTY:
NumUsrs = (unsigned)
@ -1477,7 +1482,8 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Cty.CtyCod,
FieldName,FieldName);
FieldName,
FieldName);
break;
case Hie_Lvl_INS:
NumUsrs = (unsigned)
@ -1504,7 +1510,8 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
" LIMIT 100",
FieldName,
Gbl.Hierarchy.Ins.InsCod,
FieldName,FieldName);
FieldName,
FieldName);
break;
case Hie_Lvl_CTR:
NumUsrs = (unsigned)
@ -1675,7 +1682,8 @@ void Prf_GetAndShowRankingClicksPerDay (void)
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM usr_banned)"
" ORDER BY NumClicksPerDay DESC,UsrCod"
" ORDER BY NumClicksPerDay DESC,"
"UsrCod"
" LIMIT 100");
break;
case Hie_Lvl_CTY:

View File

@ -1165,7 +1165,8 @@ static void Prg_GetItemTxtFromDB (long ItmCod,char Txt[Cns_MAX_BYTES_TEXT + 1])
/***** Get text of program item from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get program item text",
"SELECT Txt FROM prg_items"
"SELECT Txt"
" FROM prg_items"
" WHERE ItmCod=%ld"
" AND CrsCod=%ld", // Extra check
ItmCod,Gbl.Hierarchy.Crs.CrsCod);

View File

@ -4153,7 +4153,8 @@ static void Prj_GetConfigPrjFromDB (struct Prj_Projects *Projects)
/***** Get configuration of projects for current course from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get configuration of test",
"SELECT Editable" // row[0]
" FROM prj_config WHERE CrsCod=%ld",
" FROM prj_config"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod);
if (NumRows == 0)

View File

@ -200,12 +200,15 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
return;
/***** Get fields of records in a course from database *****/
Gbl.Crs.Records.LstFields.Num =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get fields of records"
" in a course",
"SELECT FieldCod,FieldName,NumLines,Visibility"
Gbl.Crs.Records.LstFields.Num = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get fields of records in a course",
"SELECT FieldCod,"
"FieldName,"
"NumLines,"
"Visibility"
" FROM crs_record_fields"
" WHERE CrsCod=%ld ORDER BY FieldName",
" WHERE CrsCod=%ld"
" ORDER BY FieldName",
Gbl.Hierarchy.Crs.CrsCod);
/***** Get the fields of records *****/
@ -520,9 +523,12 @@ unsigned long Rec_GetAllFieldsInCurrCrs (MYSQL_RES **mysql_res)
/***** Get fields of records in current course from database *****/
return DB_QuerySELECT (mysql_res,"can not get fields of records"
" in a course",
"SELECT FieldCod,FieldName,Visibility"
"SELECT FieldCod," // row[0]
"FieldName," // row[1]
"Visibility" // row[2]
" FROM crs_record_fields"
" WHERE CrsCod=%ld ORDER BY FieldName",
" WHERE CrsCod=%ld"
" ORDER BY FieldName",
Gbl.Hierarchy.Crs.CrsCod);
}
@ -589,7 +595,8 @@ unsigned Rec_CountNumRecordsInCurrCrsWithField (long FieldCod)
return
(unsigned) DB_QueryCOUNT ("can not get number of records"
" with a given field not empty in a course",
"SELECT COUNT(*) FROM crs_records"
"SELECT COUNT(*)"
v" FROM crs_records"
" WHERE FieldCod=%ld",
FieldCod);
}
@ -678,9 +685,12 @@ static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_BYTES_NAME_FIELD
/***** Get a field of a record in a course from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get a field of a record"
" in a course",
"SELECT FieldName,NumLines,Visibility"
"SELECT FieldName," // row[0]
"NumLines," // row[1]
"Visibility" // row[2]
" FROM crs_record_fields"
" WHERE CrsCod=%ld AND FieldCod=%ld",
" WHERE CrsCod=%ld"
" AND FieldCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,FieldCod);
/***** Count number of rows in result *****/
@ -1846,8 +1856,10 @@ unsigned long Rec_GetFieldFromCrsRecord (long UsrCod,long FieldCod,MYSQL_RES **m
/***** Get the text of a field of a record from database *****/
return DB_QuerySELECT (mysql_res,"can not get the text"
" of a field of a record",
"SELECT Txt FROM crs_records"
" WHERE FieldCod=%ld AND UsrCod=%ld",
"SELECT Txt"
" FROM crs_records"
" WHERE FieldCod=%ld"
" AND UsrCod=%ld",
FieldCod,UsrCod);
}
@ -1930,8 +1942,11 @@ void Rec_RemoveFieldsCrsRecordInCrs (long UsrCod,struct Crs_Course *Crs)
/***** Remove text of the field of record course *****/
DB_QueryDELETE ("can not remove user's record in a course",
"DELETE FROM crs_records"
" WHERE UsrCod=%ld AND FieldCod IN"
" (SELECT FieldCod FROM crs_record_fields WHERE CrsCod=%ld)",
" WHERE UsrCod=%ld"
" AND FieldCod IN"
" (SELECT FieldCod"
" FROM crs_record_fields"
" WHERE CrsCod=%ld)",
UsrCod,Crs->CrsCod);
}

View File

@ -779,12 +779,14 @@ static void Rep_WriteSectionHitsPerAction (struct Rep_Report *Report)
/***** Make the query *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get clicks",
"SELECT SQL_NO_CACHE ActCod,COUNT(*) AS N"
"SELECT SQL_NO_CACHE ActCod," // row[0]
"COUNT(*) AS N" // row[1]
" FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld"
" GROUP BY ActCod"
" ORDER BY N DESC LIMIT %u",
" ORDER BY N DESC"
" LIMIT %u",
(long) Report->UsrFigures.FirstClickTimeUTC,
Gbl.Usrs.Me.UsrDat.UsrCod,
Rep_MAX_ACTIONS);
@ -922,8 +924,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
DB_QuerySELECT (&mysql_res,"can not get last question index",
"SELECT MAX(N) FROM ("
// Clicks without course selected --------------------------
"SELECT "
"-1 AS CrsCod,"
"SELECT -1 AS CrsCod,"
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"%u AS Role,"
"COUNT(*) AS N"
@ -935,8 +936,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
// ---------------------------------------------------------
" UNION "
// Clicks as student, non-editing teacher or teacher in courses
"SELECT "
"CrsCod,"
"SELECT CrsCod,"
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"Role,"
"COUNT(*) AS N"
@ -1012,8 +1012,7 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
(unsigned) DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT my_courses.CrsCod," // row[0]
"COUNT(*) AS N" // row[1]
" FROM"
" (SELECT CrsCod"
" FROM (SELECT CrsCod"
" FROM crs_users"
" WHERE UsrCod=%ld"
" AND Role=%u) AS my_courses" // It's imperative to use a derived table to not block crs_usr!
@ -1102,9 +1101,12 @@ static void Rep_GetAndWriteMyHistoricCrss (Rol_Role_t Role,
/***** Get historic courses of a user from log *****/
NumCrss =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get courses of a user",
"SELECT CrsCod,COUNT(*) AS N"
"SELECT CrsCod,"
"COUNT(*) AS N"
" FROM log"
" WHERE UsrCod=%ld AND Role=%u AND CrsCod>0"
" WHERE UsrCod=%ld"
" AND Role=%u"
" AND CrsCod>0"
" GROUP BY CrsCod"
" HAVING N>%u"
" ORDER BY N DESC",
@ -1240,11 +1242,12 @@ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role,
sprintf (SubQueryRol," AND Role=%u",(unsigned) Role);
NumRows = DB_QuerySELECT (&mysql_res,"can not get clicks",
"SELECT SQL_NO_CACHE "
"YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"SELECT SQL_NO_CACHE YEAR(CONVERT_TZ(ClickTime,@@session.time_zone,'UTC')) AS Year,"
"COUNT(*) FROM log"
" WHERE ClickTime>=FROM_UNIXTIME(%ld)"
" AND UsrCod=%ld%s%s"
" AND UsrCod=%ld"
"%s"
"%s"
" GROUP BY Year"
" ORDER BY Year DESC",
(long) Report->UsrFigures.FirstClickTimeUTC,

View File

@ -468,9 +468,11 @@ static unsigned Sch_SearchCountriesInDB (const char *RangeQuery)
DB_QuerySELECT (&mysql_res,"can not get countries",
"SELECT CtyCod" // row[0]
" FROM cty_countrs"
" WHERE %s%s"
" WHERE %s"
"%s"
" ORDER BY Name_%s",
SearchQuery,RangeQuery,
SearchQuery,
RangeQuery,
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
Cty_ListCtysFound (&mysql_res,NumCtys);
return NumCtys;
@ -512,7 +514,8 @@ static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery)
"%s"
" ORDER BY ins_instits.FullName,"
"cty_countrs.Name_%s",
SearchQuery,RangeQuery,
SearchQuery,
RangeQuery,
Lan_STR_LANG_ID[Gbl.Prefs.Language]);
Ins_ListInssFound (&mysql_res,NumInss);
return NumInss;
@ -912,7 +915,9 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"ctr_centers,"
"ins_instits,"
"cty_countrs"
" WHERE brw_files.FilCod IN (SELECT FilCod FROM my_files_crs)"
" WHERE brw_files.FilCod IN"
" (SELECT FilCod"
" FROM my_files_crs)"
" AND %s"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
" AND brw_files.Cod=crs_courses.CrsCod"
@ -941,7 +946,9 @@ static unsigned Sch_SearchDocumentsInMyCoursesInDB (const char *RangeQuery)
"ctr_centers,"
"ins_instits,"
"cty_countrs"
" WHERE brw_files.FilCod IN (SELECT FilCod FROM my_files_grp)"
" WHERE brw_files.FilCod IN"
" (SELECT FilCod"
" FROM my_files_grp)"
" AND %s"
" AND brw_files.FileBrowser IN (%u,%u,%u,%u)"
" AND brw_files.Cod=grp_groups.GrpCod"

View File

@ -1789,7 +1789,9 @@ static void Sta_WriteLogComments (long LogCod)
/***** Get log comments from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get log comments",
"SELECT Comments FROM log_comments WHERE LogCod=%ld",
"SELECT Comments"
" FROM log_comments"
" WHERE LogCod=%ld",
LogCod))
{
/***** Get and write comments *****/

View File

@ -1031,7 +1031,8 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
/* Make query */
if (SubQueryFilled)
NumRows = DB_QuerySELECT (&mysql_res,"can not get surveys",
"SELECT SvyCod FROM svy_surveys"
"SELECT SvyCod"
" FROM svy_surveys"
" WHERE %s%s%s%s%s%s"
" ORDER BY %s",
SubQuery[Hie_Lvl_SYS],
@ -1261,10 +1262,15 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
/***** Get data of survey from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get survey data",
"SELECT SvyCod,Scope,Cod,Hidden,Roles,UsrCod,"
"UNIX_TIMESTAMP(StartTime),"
"UNIX_TIMESTAMP(EndTime),"
"NOW() BETWEEN StartTime AND EndTime,"
"SELECT SvyCod," // row[0]
"Scope," // row[1]
"Cod," // row[2]
"Hidden," // row[3]
"Roles," // row[4]
"UsrCod," // row[5]
"UNIX_TIMESTAMP(StartTime)," // row[6]
"UNIX_TIMESTAMP(EndTime)," // row[7]
"NOW() BETWEEN StartTime AND EndTime," // row[8]
"Title"
" FROM svy_surveys"
" WHERE SvyCod=%ld",
@ -1488,7 +1494,9 @@ static void Svy_GetSurveyTxtFromDB (long SvyCod,char Txt[Cns_MAX_BYTES_TEXT + 1]
/***** Get text of survey from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get survey text",
"SELECT Txt FROM svy_surveys WHERE SvyCod=%ld",
"SELECT Txt"
" FROM svy_surveys"
" WHERE SvyCod=%ld",
SvyCod);
/***** The result of the query must have one row or none *****/
@ -1851,11 +1859,16 @@ static bool Svy_CheckIfSimilarSurveyExists (struct Svy_Survey *Svy)
{
/***** Get number of surveys with a field value from database *****/
return (DB_QueryCOUNT ("can not get similar surveys",
"SELECT COUNT(*) FROM svy_surveys"
" WHERE Scope='%s' AND Cod=%ld"
" AND Title='%s' AND SvyCod<>%ld",
Sco_GetDBStrFromScope (Svy->Scope),Svy->Cod,
Svy->Title,Svy->SvyCod) != 0);
"SELECT COUNT(*)"
" FROM svy_surveys"
" WHERE Scope='%s'"
" AND Cod=%ld"
" AND Title='%s'"
" AND SvyCod<>%ld",
Sco_GetDBStrFromScope (Svy->Scope),
Svy->Cod,
Svy->Title,
Svy->SvyCod) != 0);
}
/*****************************************************************************/
@ -2613,9 +2626,9 @@ static bool Svy_CheckIfICanDoThisSurveyBasedOnGrps (long SvyCod)
"SELECT COUNT(*)"
" FROM svy_surveys"
" WHERE SvyCod=%ld"
" AND"
" (SvyCod NOT IN"
" (SELECT SvyCod FROM svy_groups)"
" AND (SvyCod NOT IN"
" (SELECT SvyCod"
" FROM svy_groups)"
" OR"
" SvyCod IN"
" (SELECT svy_groups.SvyCod"
@ -2635,7 +2648,8 @@ static unsigned Svy_GetNumQstsSvy (long SvyCod)
/***** Get data of questions from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of questions of a survey",
"SELECT COUNT(*) FROM svy_questions"
"SELECT COUNT(*)"
" FROM svy_questions"
" WHERE SvyCod=%ld",
SvyCod);
}
@ -2710,9 +2724,14 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
/***** Get the type of answer and the stem from the database *****/
/* Get the question from database */
DB_QuerySELECT (&mysql_res,"can not get a question",
"SELECT QstInd,AnsType,Stem FROM svy_questions"
" WHERE QstCod=%ld AND SvyCod=%ld",
SvyQst->QstCod,SvyCod);
"SELECT QstInd," // row[0]
"AnsType," // row[1]
"Stem" // row[2]
" FROM svy_questions"
" WHERE QstCod=%ld"
" AND SvyCod=%ld",
SvyQst->QstCod,
SvyCod);
row = mysql_fetch_row (mysql_res);
@ -2948,8 +2967,10 @@ static bool Svy_CheckIfAnswerExists (long QstCod,unsigned AnsInd)
{
/***** Get answers of a question from database *****/
return (DB_QueryCOUNT ("can not check if an answer exists",
"SELECT COUNT(*) FROM svy_answers"
" WHERE QstCod=%ld AND AnsInd=%u",
"SELECT COUNT(*)"
" FROM svy_answers"
" WHERE QstCod=%ld"
" AND AnsInd=%u",
QstCod,AnsInd) != 0);
}
@ -2963,8 +2984,12 @@ static unsigned Svy_GetAnswersQst (long QstCod,MYSQL_RES **mysql_res)
/***** Get answers of a question from database *****/
NumRows = DB_QuerySELECT (mysql_res,"can not get answers of a question",
"SELECT AnsInd,NumUsrs,Answer FROM svy_answers"
" WHERE QstCod=%ld ORDER BY AnsInd",
"SELECT AnsInd,"
"NumUsrs,"
"Answer"
" FROM svy_answers"
" WHERE QstCod=%ld"
" ORDER BY AnsInd",
QstCod);
/***** Count number of rows of result *****/
@ -3198,7 +3223,8 @@ static unsigned Svy_GetQstIndFromQstCod (long QstCod)
/***** Get number of surveys with a field value from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get question index",
"SELECT QstInd FROM svy_questions"
"SELECT QstInd"
" FROM svy_questions"
" WHERE QstCod=%ld",
QstCod);
@ -3230,7 +3256,9 @@ static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod)
/***** Get number of surveys with a field value from database *****/
DB_QuerySELECT (&mysql_res,"can not get last question index",
"SELECT MAX(QstInd) FROM svy_questions WHERE SvyCod=%ld",
"SELECT MAX(QstInd)"
" FROM svy_questions"
" WHERE SvyCod=%ld",
SvyCod);
/***** Get number of users *****/
@ -3274,10 +3302,15 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys,
bool PutFormAnswerSurvey = Svy->Status.ICanAnswer && !Editing;
/***** Get data of questions from database *****/
NumQsts = (unsigned) DB_QuerySELECT (&mysql_res,"can not get data of a question",
"SELECT QstCod,QstInd,AnsType,Stem"
NumQsts = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get data of a question",
"SELECT QstCod," // row[0]
"QstInd," // row[1]
"AnsType," // row[2]
"Stem" // row[3]
" FROM svy_questions"
" WHERE SvyCod=%ld ORDER BY QstInd",
" WHERE SvyCod=%ld"
" ORDER BY QstInd",
Svy->SvyCod);
/***** Begin box *****/
@ -3789,8 +3822,10 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
/***** Get questions of this survey from database *****/
NumQsts = (unsigned) DB_QuerySELECT (&mysql_res,"can not get questions"
" of a survey",
"SELECT QstCod FROM svy_questions"
" WHERE SvyCod=%ld ORDER BY QstCod",
"SELECT QstCod"
" FROM svy_questions"
" WHERE SvyCod=%ld"
" ORDER BY QstCod",
SvyCod);
if (NumQsts)
{
@ -3868,9 +3903,12 @@ static bool Svy_CheckIfIHaveAnsweredSvy (long SvyCod)
{
/***** Get number of surveys with a field value from database *****/
return (DB_QueryCOUNT ("can not check if you have answered a survey",
"SELECT COUNT(*) FROM svy_users"
" WHERE SvyCod=%ld AND UsrCod=%ld",
SvyCod,Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
"SELECT COUNT(*)"
" FROM svy_users"
" WHERE SvyCod=%ld"
" AND UsrCod=%ld",
SvyCod,
Gbl.Usrs.Me.UsrDat.UsrCod) != 0);
}
/*****************************************************************************/
@ -3883,7 +3921,8 @@ static unsigned Svy_GetNumUsrsWhoHaveAnsweredSvy (long SvyCod)
return
(unsigned) DB_QueryCOUNT ("can not get number of users"
" who have answered a survey",
"SELECT COUNT(*) FROM svy_users"
"SELECT COUNT(*)"
" FROM svy_users"
" WHERE SvyCod=%ld",
SvyCod);
}
@ -3967,7 +4006,8 @@ unsigned Svy_GetNumCoursesWithCrsSurveys (Hie_Lvl_Level_t Scope)
DB_QueryCOUNT ("can not get number of courses with surveys",
"SELECT COUNT(DISTINCT Cod)"
" FROM svy_surveys"
" WHERE Scope='%s' AND Cod=%ld",
" WHERE Scope='%s'"
" AND Cod=%ld",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),
Gbl.Hierarchy.Crs.CrsCod);
default:
@ -4109,8 +4149,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_SYS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM svy_surveys,"
"svy_questions"
" WHERE svy_surveys.Scope='%s'"
@ -4121,8 +4161,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTY:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM ins_instits,"
"ctr_centers,"
"deg_degrees,"
@ -4143,8 +4183,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_INS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM ctr_centers,"
"deg_degrees,"
"crs_courses,"
@ -4163,8 +4203,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CTR:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM deg_degrees,"
"crs_courses,"
"svy_surveys,"
@ -4181,8 +4221,8 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_DEG:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM crs_courses,"
"svy_surveys,"
"svy_questions"
@ -4197,11 +4237,12 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
case Hie_Lvl_CRS:
DB_QuerySELECT (&mysql_res,"can not get number of questions"
" per survey",
"SELECT AVG(NumQsts) FROM"
" (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
"SELECT AVG(NumQsts)"
" FROM (SELECT COUNT(svy_questions.QstCod) AS NumQsts"
" FROM svy_surveys,"
"svy_questions"
" WHERE svy_surveys.Scope='%s' AND svy_surveys.Cod=%ld"
" WHERE svy_surveys.Scope='%s'"
" AND svy_surveys.Cod=%ld"
" AND svy_surveys.SvyCod=svy_questions.SvyCod"
" GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Gbl.Hierarchy.Crs.CrsCod);

View File

@ -129,7 +129,8 @@ bool Tag_CheckIfCurrentCrsHasTestTags (void)
{
/***** Get available tags from database *****/
return (DB_QueryCOUNT ("can not check if course has tags",
"SELECT COUNT(*) FROM tst_tags"
"SELECT COUNT(*)"
" FROM tst_tags"
" WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod) != 0);
}
@ -164,7 +165,8 @@ unsigned Tag_GetEnabledTagsFromThisCrs (MYSQL_RES **mysql_res)
"SELECT TagCod," // row[0]
"TagTxt" // row[1]
" FROM tst_tags"
" WHERE CrsCod=%ld AND TagHidden='N'"
" WHERE CrsCod=%ld"
" AND TagHidden='N'"
" ORDER BY TagTxt",
Gbl.Hierarchy.Crs.CrsCod);
}
@ -290,7 +292,8 @@ void Tag_RenameTag (void)
DB_Query ("can not create temporary table",
"CREATE TEMPORARY TABLE tst_question_tags_tmp"
" ENGINE=MEMORY"
" SELECT QstCod FROM tst_question_tags"
" SELECT QstCod"
" FROM tst_question_tags"
" WHERE TagCod=%ld",
ExistingTagCod);
@ -300,7 +303,8 @@ void Tag_RenameTag (void)
"DELETE FROM tst_question_tags"
" WHERE TagCod=%ld"
" AND QstCod IN"
" (SELECT QstCod FROM tst_question_tags_tmp)",
" (SELECT QstCod"
" FROM tst_question_tags_tmp)",
OldTagCod);
/* Change old tag to new tag in questions where it would not be repeated */
@ -310,7 +314,8 @@ void Tag_RenameTag (void)
" SET TagCod=%ld"
" WHERE TagCod=%ld"
" AND QstCod NOT IN"
" (SELECT QstCod FROM tst_question_tags_tmp)",
" (SELECT QstCod"
" FROM tst_question_tags_tmp)",
ExistingTagCod,
OldTagCod);
@ -321,17 +326,22 @@ void Tag_RenameTag (void)
/***** Delete old tag from tst_tags
because it is not longer used *****/
DB_QueryDELETE ("can not remove old tag",
"DELETE FROM tst_tags WHERE TagCod=%ld",
"DELETE FROM tst_tags"
" WHERE TagCod=%ld",
OldTagCod);
}
else // Renaming is easy
{
/***** Simple update replacing each instance of the old tag by the new tag *****/
DB_QueryUPDATE ("can not update tag",
"UPDATE tst_tags SET TagTxt='%s',ChangeTime=NOW()"
"UPDATE tst_tags"
" SET TagTxt='%s',"
"ChangeTime=NOW()"
" WHERE tst_tags.CrsCod=%ld"
" AND tst_tags.TagTxt='%s'",
NewTagTxt,Gbl.Hierarchy.Crs.CrsCod,OldTagTxt);
NewTagTxt,
Gbl.Hierarchy.Crs.CrsCod,
OldTagTxt);
}
/***** Write message to show the change made *****/
@ -359,8 +369,10 @@ static long Tag_GetTagCodFromTagTxt (const char *TagTxt)
/***** Get tag code from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get tag",
"SELECT TagCod FROM tst_tags"
" WHERE CrsCod=%ld AND TagTxt='%s'",
"SELECT TagCod"
" FROM tst_tags"
" WHERE CrsCod=%ld"
" AND TagTxt='%s'",
Gbl.Hierarchy.Crs.CrsCod,TagTxt);
if (NumRows == 1)
{
@ -664,9 +676,11 @@ void Tag_RemoveUnusedTagsFromCrs (long CrsCod)
/***** Remove unused tags from tst_tags *****/
DB_QueryDELETE ("can not remove unused tags",
"DELETE FROM tst_tags"
" WHERE CrsCod=%ld AND TagCod NOT IN"
" WHERE CrsCod=%ld"
" AND TagCod NOT IN"
" (SELECT DISTINCT tst_question_tags.TagCod"
" FROM tst_questions,tst_question_tags"
" FROM tst_questions,"
"tst_question_tags"
" WHERE tst_questions.CrsCod=%ld"
" AND tst_questions.QstCod=tst_question_tags.QstCod)",
CrsCod,

View File

@ -1913,7 +1913,8 @@ static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test,
" AND tst_questions.QstCod NOT IN"
" (SELECT tst_question_tags.QstCod"
" FROM tst_tags,tst_question_tags"
" WHERE tst_tags.CrsCod=%ld AND tst_tags.TagHidden='Y'"
" WHERE tst_tags.CrsCod=%ld"
" AND tst_tags.TagHidden='Y'"
" AND tst_tags.TagCod=tst_question_tags.TagCod)"
" AND tst_questions.QstCod=tst_question_tags.QstCod"
" AND tst_question_tags.TagCod=tst_tags.TagCod"
@ -2912,7 +2913,8 @@ unsigned long Tst_GetTagsQst (long QstCod,MYSQL_RES **mysql_res)
/***** Get the tags of a question from database *****/
return DB_QuerySELECT (mysql_res,"can not get the tags of a question",
"SELECT tst_tags.TagTxt" // row[0]
" FROM tst_question_tags,tst_tags"
" FROM tst_question_tags,"
"tst_tags"
" WHERE tst_question_tags.QstCod=%ld"
" AND tst_question_tags.TagCod=tst_tags.TagCod"
" AND tst_tags.CrsCod=%ld"
@ -4019,14 +4021,16 @@ static long Tst_GetMedCodFromDB (long CrsCod,long QstCod,int NumOpt)
NumRows = DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT MedCod" // row[0]
" FROM tst_questions"
" WHERE QstCod=%ld AND CrsCod=%ld",
" WHERE QstCod=%ld"
" AND CrsCod=%ld",
QstCod,CrsCod);
else
// Get media associated to answer
NumRows = DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT MedCod" // row[0]
" FROM tst_answers"
" WHERE QstCod=%ld AND AnsInd=%u",
" WHERE QstCod=%ld"
" AND AnsInd=%u",
QstCod,(unsigned) NumOpt);
if (NumRows)
@ -4533,8 +4537,11 @@ bool Tst_CheckIfQuestionExistsInDB (struct Tst_Question *Question)
NumQstsWithThisStem =
(unsigned) DB_QuerySELECT (&mysql_res_qst,"can not check"
" if a question exists",
"SELECT QstCod FROM tst_questions"
" WHERE CrsCod=%ld AND AnsType='%s' AND Stem='%s'",
"SELECT QstCod"
" FROM tst_questions"
" WHERE CrsCod=%ld"
" AND AnsType='%s'"
" AND Stem='%s'",
Gbl.Hierarchy.Crs.CrsCod,
Tst_StrAnswerTypesDB[Question->Answer.Type],
Question->Stem);
@ -4556,8 +4563,10 @@ bool Tst_CheckIfQuestionExistsInDB (struct Tst_Question *Question)
NumOptsExistingQstInDB =
(unsigned) DB_QuerySELECT (&mysql_res_ans,"can not get the answer"
" of a question",
"SELECT Answer FROM tst_answers"
" WHERE QstCod=%ld ORDER BY AnsInd",
"SELECT Answer"
" FROM tst_answers"
" WHERE QstCod=%ld"
" ORDER BY AnsInd",
Question->QstCod);
switch (Question->Answer.Type)
@ -5239,12 +5248,15 @@ static void Tst_RemoveMediaFromAllAnsOfQst (long CrsCod,long QstCod)
NumMedia =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT tst_answers.MedCod" // row[0]
" FROM tst_answers,tst_questions"
" FROM tst_answers,"
"tst_questions"
" WHERE tst_answers.QstCod=%ld"
" AND tst_answers.QstCod=tst_questions.QstCod"
" AND tst_questions.CrsCod=%ld" // Extra check
" AND tst_questions.QstCod=%ld", // Extra check
QstCod,CrsCod,QstCod);
QstCod,
CrsCod,
QstCod);
/***** Go over result removing media *****/
Med_RemoveMediaFromAllRows (NumMedia,mysql_res);
@ -5290,7 +5302,8 @@ static void Tst_RemoveAllMedFilesFromAnsOfAllQstsInCrs (long CrsCod)
NumMedia =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get media",
"SELECT tst_answers.MedCod" // row[0]
" FROM tst_questions,tst_answers"
" FROM tst_questions,"
"tst_answers"
" WHERE tst_questions.CrsCod=%ld"
" AND tst_questions.QstCod=tst_answers.QstCod",
CrsCod);
@ -5496,7 +5509,8 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
"SUM(NumHits),"
"SUM(Score)"
" FROM tst_questions"
" WHERE CrsCod=%ld AND AnsType='%s'",
" WHERE CrsCod=%ld"
" AND AnsType='%s'",
Gbl.Hierarchy.Crs.CrsCod,
Tst_StrAnswerTypesDB[AnsType]);
break;

View File

@ -2071,7 +2071,8 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
(unsigned) DB_QuerySELECT (&mysql_res,"can not get test exams of a user",
"SELECT ExaCod" // row[0]
" FROM tst_exams"
" WHERE CrsCod=%ld AND UsrCod=%ld"
" WHERE CrsCod=%ld"
" AND UsrCod=%ld"
" AND EndTime>=FROM_UNIXTIME(%ld)"
" AND StartTime<=FROM_UNIXTIME(%ld)"
" ORDER BY ExaCod",
@ -2624,12 +2625,12 @@ static void TstPrn_ShowTagsPresentInAPrint (long ResCod)
DB_QuerySELECT (&mysql_res,"can not get tags"
" present in a test exam",
"SELECT tst_tags.TagTxt" // row[0]
" FROM"
" (SELECT DISTINCT(tst_question_tags.TagCod)"
" FROM tst_question_tags,tst_exam_questions"
" FROM (SELECT DISTINCT(tst_question_tags.TagCod)"
" FROM tst_question_tags,"
"tst_exam_questions"
" WHERE tst_exam_questions.ExaCod=%ld"
" AND tst_exam_questions.QstCod=tst_question_tags.QstCod)"
" AS TagsCods,tst_tags"
" AND tst_exam_questions.QstCod=tst_question_tags.QstCod) AS TagsCods,"
"tst_tags"
" WHERE TagsCods.TagCod=tst_tags.TagCod"
" ORDER BY tst_tags.TagTxt",
ResCod);
@ -2698,7 +2699,8 @@ void TstPrn_GetPrintDataByPrnCod (struct TstPrn_Print *Print)
"AllowTeachers," // row[6]
"Score" // row[7]
" FROM tst_exams"
" WHERE ExaCod=%ld AND CrsCod=%ld",
" WHERE ExaCod=%ld"
" AND CrsCod=%ld",
Print->PrnCod,
Gbl.Hierarchy.Crs.CrsCod) == 1)
{

View File

@ -86,7 +86,8 @@ unsigned Tml_DB_GetWho (MYSQL_RES **mysql_res)
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get which timeline users",
"SELECT TimelineUsrs" // row[0]
" FROM usr_last WHERE UsrCod=%ld",
" FROM usr_last"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod);
}
@ -98,7 +99,8 @@ void Tml_DB_UpdateWho (Usr_Who_t Who)
{
/***** Update which users in database *****/
DB_QueryUPDATE ("can not update which timeline users",
"UPDATE usr_last SET TimelineUsrs=%u"
"UPDATE usr_last"
" SET TimelineUsrs=%u"
" WHERE UsrCod=%ld",
(unsigned) Who,
Gbl.Usrs.Me.UsrDat.UsrCod);
@ -142,9 +144,12 @@ long Tml_DB_GetPubCodOfOriginalNote (long NotCod)
/***** Get code of publication of the original note *****/
if (DB_QuerySELECT (&mysql_res,"can not get code of publication",
"SELECT PubCod FROM tml_pubs"
" WHERE NotCod=%ld AND PubType=%u",
NotCod,(unsigned) Tml_Pub_ORIGINAL_NOTE) == 1)
"SELECT PubCod"
" FROM tml_pubs"
" WHERE NotCod=%ld"
" AND PubType=%u",
NotCod,
(unsigned) Tml_Pub_ORIGINAL_NOTE) == 1)
{ // Result should have a unique row
/* Get code of publication (row[0]) */
row = mysql_fetch_row (mysql_res);
@ -235,7 +240,9 @@ void Tml_DB_CreateTmpTableVisibleTimeline (void)
"CREATE TEMPORARY TABLE tml_tmp_visible_timeline "
"(NotCod BIGINT NOT NULL,UNIQUE INDEX(NotCod))"
" ENGINE=MEMORY"
" SELECT NotCod FROM tml_timelines WHERE SessionId='%s'",
" SELECT NotCod"
" FROM tml_timelines"
" WHERE SessionId='%s'",
Gbl.Session.Id);
}
@ -290,7 +297,9 @@ mysql> SELECT SessionId,COUNT(*) FROM tml_timelines GROUP BY SessionId;
DB_QueryINSERT ("can not insert notes in timeline",
"INSERT IGNORE INTO tml_timelines"
" (SessionId,NotCod)"
" SELECT '%s',NotCod FROM tml_tmp_just_retrieved_notes",
" SELECT '%s',"
"NotCod"
" FROM tml_tmp_just_retrieved_notes",
Gbl.Session.Id);
}
@ -464,8 +473,10 @@ void Tml_DB_RemoveAllPostsUsr (long UsrCod)
DB_QueryDELETE ("can not remove posts",
"DELETE FROM tml_posts"
" WHERE PstCod IN"
" (SELECT Cod FROM tml_notes"
" WHERE UsrCod=%ld AND NoteType=%u)",
" (SELECT Cod"
" FROM tml_notes"
" WHERE UsrCod=%ld"
" AND NoteType=%u)",
UsrCod,(unsigned) TL_NOTE_POST);
}
@ -477,8 +488,10 @@ unsigned Tml_DB_GetNumCommsInNote (long NotCod)
{
return (unsigned)
DB_QueryCOUNT ("can not get number of comments in a note",
"SELECT COUNT(*) FROM tml_pubs"
" WHERE NotCod=%ld AND PubType=%u",
"SELECT COUNT(*)"
" FROM tml_pubs"
" WHERE NotCod=%ld"
" AND PubType=%u",
NotCod,(unsigned) Tml_Pub_COMMENT_TO_NOTE);
}
@ -493,7 +506,8 @@ unsigned Tml_DB_GetComms (long NotCod,MYSQL_RES **mysql_res)
DB_QuerySELECT (mysql_res,"can not get comments",
"SELECT PubCod" // row[0]
" FROM tml_pubs"
" WHERE NotCod=%ld AND PubType=%u",
" WHERE NotCod=%ld"
" AND PubType=%u",
NotCod,(unsigned) Tml_Pub_COMMENT_TO_NOTE);
}
@ -534,9 +548,8 @@ unsigned Tml_DB_GetFinalComms (long NotCod,unsigned NumFinalCommsToGet,
/***** Get final comments of a note from database *****/
return (unsigned)
DB_QuerySELECT (mysql_res,"can not get comments",
"SELECT * FROM "
"("
"SELECT tml_pubs.PubCod," // row[0]
"SELECT *"
" FROM (SELECT tml_pubs.PubCod," // row[0]
"tml_pubs.PublisherCod," // row[1]
"tml_pubs.NotCod," // row[2]
"UNIX_TIMESTAMP(tml_pubs.TimePublish)," // row[3]
@ -546,8 +559,8 @@ unsigned Tml_DB_GetFinalComms (long NotCod,unsigned NumFinalCommsToGet,
" WHERE tml_pubs.NotCod=%ld"
" AND tml_pubs.PubType=%u"
" AND tml_pubs.PubCod=tml_comments.PubCod"
" ORDER BY tml_pubs.PubCod DESC LIMIT %u"
") AS comments"
" ORDER BY tml_pubs.PubCod DESC"
" LIMIT %u) AS comments"
" ORDER BY PubCod",
NotCod,(unsigned) Tml_Pub_COMMENT_TO_NOTE,
NumFinalCommsToGet);
@ -769,7 +782,9 @@ void Tml_DB_CreateSubQueryAlreadyExists (const struct Tml_Timeline *Timeline,
};
snprintf (SubQueries->AlreadyExists,sizeof (SubQueries->AlreadyExists),
" tml_pubs.NotCod NOT IN (SELECT NotCod FROM %s)",
" tml_pubs.NotCod NOT IN"
" (SELECT NotCod"
" FROM %s)",
Table[Timeline->WhatToGet]);
}
@ -809,7 +824,8 @@ unsigned Tml_DB_SelectTheMostRecentPub (const struct Tml_Pub_SubQueries *SubQuer
"tml_pubs.PubType" // row[3]
" FROM tml_pubs%s"
" WHERE %s%s%s%s"
" ORDER BY tml_pubs.PubCod DESC LIMIT 1",
" ORDER BY tml_pubs.PubCod"
" DESC LIMIT 1",
SubQueries->TablePublishers,
SubQueries->RangeBottom,
SubQueries->RangeTop,
@ -835,7 +851,8 @@ unsigned Tml_DB_GetDataOfPubByCod (long PubCod,MYSQL_RES **mysql_res)
"NotCod," // row[1]
"PublisherCod," // row[2]
"PubType" // row[3]
" FROM tml_pubs WHERE PubCod=%ld",
" FROM tml_pubs"
" WHERE PubCod=%ld",
PubCod);
}
@ -851,7 +868,8 @@ long Tml_DB_GetNotCodFromPubCod (long PubCod)
/***** Get code of note from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get code of note",
"SELECT NotCod FROM tml_pubs"
"SELECT NotCod"
" FROM tml_pubs"
" WHERE PubCod=%ld",
PubCod) == 1) // Result should have a unique row
{
@ -908,7 +926,8 @@ unsigned long Tml_DB_GetNumPubsUsr (long UsrCod)
{
/***** Get number of posts from a user from database *****/
return DB_QueryCOUNT ("can not get number of publications from a user",
"SELECT COUNT(*) FROM tml_pubs"
"SELECT COUNT(*)"
" FROM tml_pubs"
" WHERE PublisherCod=%ld",
UsrCod);
}
@ -1016,8 +1035,10 @@ bool Tml_DB_CheckIfFavedByUsr (Tml_Usr_FavSha_t FavSha,long Cod,long UsrCod)
{
/***** Check if a user has favourited a note/comment from database *****/
return (DB_QueryCOUNT ("can not check if a user has favourited",
"SELECT COUNT(*) FROM %s"
" WHERE %s=%ld AND UsrCod=%ld",
"SELECT COUNT(*)"
" FROM %s"
" WHERE %s=%ld"
" AND UsrCod=%ld",
Tml_DB_TableFav[FavSha],
Tml_DB_FieldFav[FavSha],Cod,UsrCod) != 0);
}
@ -1031,7 +1052,8 @@ unsigned Tml_DB_GetNumFavers (Tml_Usr_FavSha_t FavSha,long Cod,long UsrCod)
/***** Get number of times (users) a note/comment has been favourited *****/
return (unsigned)
DB_QueryCOUNT ("can not get number of times has been favourited",
"SELECT COUNT(*) FROM %s"
"SELECT COUNT(*)"
" FROM %s"
" WHERE %s=%ld"
" AND UsrCod<>%ld", // Extra check
Tml_DB_TableFav[FavSha],
@ -1054,7 +1076,8 @@ unsigned Tml_DB_GetFavers (Tml_Usr_FavSha_t FavSha,
" FROM %s"
" WHERE %s=%ld"
" AND UsrCod<>%ld" // Extra check
" ORDER BY FavCod LIMIT %u",
" ORDER BY FavCod"
" LIMIT %u",
Tml_DB_TableFav[FavSha],
Tml_DB_FieldFav[FavSha],Cod,
UsrCod,
@ -1149,7 +1172,8 @@ void Tml_DB_RemoveAllFavsToAllCommsInAllNotesBy (long UsrCod)
bool Tml_DB_CheckIfSharedByUsr (long NotCod,long UsrCod)
{
return (DB_QueryCOUNT ("can not check if a user has shared a note",
"SELECT COUNT(*) FROM tml_pubs"
"SELECT COUNT(*)"
" FROM tml_pubs"
" WHERE NotCod=%ld"
" AND PublisherCod=%ld"
" AND PubType=%u",
@ -1167,7 +1191,8 @@ unsigned Tml_DB_GetNumSharers (long NotCod,long UsrCod)
/***** Get number of times (users) this note has been shared *****/
return (unsigned)
DB_QueryCOUNT ("can not get number of times a note has been shared",
"SELECT COUNT(*) FROM tml_pubs"
"SELECT COUNT(*)"
" FROM tml_pubs"
" WHERE NotCod=%ld"
" AND PublisherCod<>%ld"
" AND PubType=%u",
@ -1191,7 +1216,8 @@ unsigned Tml_DB_GetSharers (long NotCod,long UsrCod,unsigned MaxUsrs,
" WHERE NotCod=%ld"
" AND PublisherCod<>%ld"
" AND PubType=%u"
" ORDER BY PubCod LIMIT %u",
" ORDER BY PubCod"
" LIMIT %u",
NotCod,
UsrCod,
(unsigned) Tml_Pub_SHARED_NOTE,

View File

@ -463,7 +463,8 @@ void Usr_GetUsrCodFromEncryptedUsrCod (struct UsrData *UsrDat)
{
/***** Get user's code from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get user's code",
"SELECT UsrCod FROM usr_data"
"SELECT UsrCod"
" FROM usr_data"
" WHERE EncryptedUsrCod='%s'",
UsrDat->EnUsrCod);
if (NumRows != 1)
@ -755,7 +756,8 @@ static void Usr_GetMyLastData (void)
"LastRole," // row[4]
"UNIX_TIMESTAMP(LastTime)," // row[5]
"UNIX_TIMESTAMP(LastAccNotif)" // row[6]
" FROM usr_last WHERE UsrCod=%ld",
" FROM usr_last"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod);
if (NumRows == 0)
{
@ -906,9 +908,14 @@ bool Usr_CheckIfUsrIsAdm (long UsrCod,Hie_Lvl_Level_t Scope,long Cod)
{
/***** Get if a user is administrator of a degree from database *****/
return (DB_QueryCOUNT ("can not check if a user is administrator",
"SELECT COUNT(*) FROM usr_admins"
" WHERE UsrCod=%ld AND Scope='%s' AND Cod=%ld",
UsrCod,Sco_GetDBStrFromScope (Scope),Cod) != 0);
"SELECT COUNT(*)"
" FROM usr_admins"
" WHERE UsrCod=%ld"
" AND Scope='%s'"
" AND Cod=%ld",
UsrCod,
Sco_GetDBStrFromScope (Scope),
Cod) != 0);
}
/*****************************************************************************/
@ -935,9 +942,12 @@ bool Usr_CheckIfUsrIsSuperuser (long UsrCod)
Gbl.Cache.UsrIsSuperuser.UsrCod = UsrCod;
Gbl.Cache.UsrIsSuperuser.IsSuperuser =
(DB_QueryCOUNT ("can not check if a user is superuser",
"SELECT COUNT(*) FROM usr_admins"
" WHERE UsrCod=%ld AND Scope='%s'",
UsrCod,Sco_GetDBStrFromScope (Hie_Lvl_SYS)) != 0);
"SELECT COUNT(*)"
" FROM usr_admins"
" WHERE UsrCod=%ld"
" AND Scope='%s'",
UsrCod,
Sco_GetDBStrFromScope (Hie_Lvl_SYS)) != 0);
return Gbl.Cache.UsrIsSuperuser.IsSuperuser;
}
@ -1063,7 +1073,8 @@ unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
" FROM crs_users"
" WHERE UsrCod=%ld"
" AND Role=%u",
UsrCod,(unsigned) Role);
UsrCod,
(unsigned) Role);
}
/*****************************************************************************/
@ -1080,7 +1091,8 @@ unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role)
" WHERE UsrCod=%ld"
" AND Role=%u"
" AND Accepted='N'",
UsrCod,(unsigned) Role);
UsrCod,
(unsigned) Role);
}
/*****************************************************************************/
@ -1149,7 +1161,8 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(DISTINCT crs_users.UsrCod)"
" FROM crs_users,usr_courses_tmp"
" FROM crs_users,"
"usr_courses_tmp"
" WHERE crs_users.CrsCod=usr_courses_tmp.CrsCod"
" AND crs_users.Role IN (%s)",
OthersRolesStr);
@ -1753,7 +1766,9 @@ void Usr_GetMyCourses (void)
NumCrss =
(unsigned) DB_QuerySELECT (&mysql_res,"can not get which courses"
" you belong to",
"SELECT CrsCod,Role,DegCod"
"SELECT CrsCod,"
"Role,"
"DegCod"
" FROM my_courses_tmp");
for (NumCrs = 0;
NumCrs < NumCrss;
@ -2470,7 +2485,8 @@ bool Usr_ChkIfEncryptedUsrCodExists (const char EncryptedUsrCod[Cry_BYTES_ENCRYP
/***** Get if an encrypted user's code already existed in database *****/
return (DB_QueryCOUNT ("can not check if an encrypted user's code"
" already existed",
"SELECT COUNT(*) FROM usr_data"
"SELECT COUNT(*)"
" FROM usr_data"
" WHERE EncryptedUsrCod='%s'",
EncryptedUsrCod) != 0);
}
@ -3536,13 +3552,19 @@ void Usr_UpdateMyLastData (void)
{
/***** Check if it exists an entry for me *****/
if (DB_QueryCOUNT ("can not get last user's click",
"SELECT COUNT(*) FROM usr_last WHERE UsrCod=%ld",
"SELECT COUNT(*)"
" FROM usr_last"
" WHERE UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod))
/***** Update my last accessed course, tab and time of click in database *****/
// WhatToSearch, LastAccNotif remain unchanged
DB_QueryUPDATE ("can not update last user's data",
"UPDATE usr_last"
" SET LastSco='%s',LastCod=%ld,LastAct=%ld,LastRole=%u,LastTime=NOW()"
" SET LastSco='%s',"
"LastCod=%ld,"
"LastAct=%ld,"
"LastRole=%u,"
"LastTime=NOW()"
" WHERE UsrCod=%ld",
Sco_GetDBStrFromScope (Gbl.Hierarchy.Level),
Gbl.Hierarchy.Cod,
@ -4167,7 +4189,8 @@ unsigned Usr_GetNumUsrsWhoDontClaimToBelongToAnyCty (void)
from database *****/
Gbl.Cache.NumUsrsWhoDontClaimToBelongToAnyCty.NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data"
"SELECT COUNT(UsrCod)"
" FROM usr_data"
" WHERE CtyCod<0");
Gbl.Cache.NumUsrsWhoDontClaimToBelongToAnyCty.Valid = true;
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,-1L,
@ -4207,7 +4230,8 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToAnotherCty (void)
from database *****/
Gbl.Cache.NumUsrsWhoClaimToBelongToAnotherCty.NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data"
"SELECT COUNT(UsrCod)"
" FROM usr_data"
" WHERE CtyCod=0");
Gbl.Cache.NumUsrsWhoClaimToBelongToAnotherCty.Valid = true;
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,Hie_Lvl_CTY,0,
@ -4262,7 +4286,8 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToCty (struct Cty_Countr *Cty)
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs =
Cty->NumUsrsWhoClaimToBelongToCty.NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data"
"SELECT COUNT(UsrCod)"
" FROM usr_data"
" WHERE CtyCod=%ld",
Cty->CtyCod);
Cty->NumUsrsWhoClaimToBelongToCty.Valid = true;
@ -4318,7 +4343,8 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToIns (struct Ins_Instit *Ins)
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs =
Ins->NumUsrsWhoClaimToBelongToIns.NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data"
"SELECT COUNT(UsrCod)"
" FROM usr_data"
" WHERE InsCod=%ld",
Ins->InsCod);
Ins->NumUsrsWhoClaimToBelongToIns.Valid = true;
@ -4374,7 +4400,8 @@ unsigned Usr_GetNumUsrsWhoClaimToBelongToCtr (struct Ctr_Center *Ctr)
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs =
Ctr->NumUsrsWhoClaimToBelongToCtr.NumUsrs =
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data"
"SELECT COUNT(UsrCod)"
" FROM usr_data"
" WHERE CtrCod=%ld",
Ctr->CtrCod);
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTR,Hie_Lvl_CTR,Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod,
@ -5089,7 +5116,9 @@ void Usr_CreateTmpTableAndSearchCandidateUsrs (const char SearchQuery[Sch_MAX_BY
*/
sprintf (Query,"CREATE TEMPORARY TABLE candidate_users"
" (UsrCod INT NOT NULL,UNIQUE INDEX(UsrCod)) ENGINE=MEMORY"
" SELECT UsrCod FROM usr_data WHERE %s",
" SELECT UsrCod"
" FROM usr_data"
" WHERE %s",
SearchQuery);
if (mysql_query (&Gbl.mysql,Query))
DB_ExitOnMySQLError ("can not create temporary table");
@ -5167,7 +5196,8 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope)
"SELECT %s"
" FROM usr_data"
" WHERE UsrCod IN "
"(SELECT UsrCod FROM usr_admins"
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s')"
" OR UsrCod IN "
"(SELECT usr_admins.UsrCod"
@ -5219,7 +5249,8 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope)
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" OR UsrCod IN "
"(SELECT usr_admins.UsrCod"
" FROM usr_admins,"
@ -5260,11 +5291,13 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope)
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" OR UsrCod IN "
"(SELECT usr_admins.UsrCod"
" FROM usr_admins,"
@ -5294,15 +5327,18 @@ static void Usr_GetAdmsLst (Hie_Lvl_Level_t Scope)
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" OR UsrCod IN "
"(SELECT UsrCod"
" FROM usr_admins"
" WHERE Scope='%s' AND Cod=%ld)"
" WHERE Scope='%s'"
" AND Cod=%ld)"
" ORDER BY Surname1,"
"Surname2,"
"FirstName,"
@ -5375,7 +5411,9 @@ static void Usr_GetGstsLst (Hie_Lvl_Level_t Scope)
DB_BuildQuery (&Query,
"SELECT %s"
" FROM usr_data"
" WHERE (CtyCod=%ld OR InsCtyCod=%ld)"
" WHERE (CtyCod=%ld"
" OR"
" InsCtyCod=%ld)"
" AND UsrCod NOT IN"
" (SELECT UsrCod"
" FROM crs_users)"
@ -9313,7 +9351,8 @@ bool Usr_ChkIfUsrCodExists (long UsrCod)
/***** Get if a user exists in database *****/
return (DB_QueryCOUNT ("can not check if a user exists",
"SELECT COUNT(*) FROM usr_data"
"SELECT COUNT(*)"
" FROM usr_data"
" WHERE UsrCod=%ld",
UsrCod) != 0);
}
@ -9361,7 +9400,8 @@ unsigned Usr_GetTotalNumberOfUsersInPlatform (void)
/***** Get number of users from database *****/
return
(unsigned) DB_QueryCOUNT ("can not get number of users",
"SELECT COUNT(UsrCod) FROM usr_data");
"SELECT COUNT(UsrCod)"
" FROM usr_data");
}
/*****************************************************************************/
@ -10060,7 +10100,8 @@ double Usr_GetCachedNumUsrsPerCrs (Hie_Lvl_Level_t Scope,long Cod,Rol_Role_t Rol
bool Usr_CheckIfUsrBanned (long UsrCod)
{
return (DB_QueryCOUNT ("can not check if user is banned",
"SELECT COUNT(*) FROM usr_banned"
"SELECT COUNT(*)"
" FROM usr_banned"
" WHERE UsrCod=%ld",
UsrCod) != 0);
}