mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-18 06:25:42 +02:00
Version 18.7.5
This commit is contained in:
parent
ef6631b5ac
commit
28969d7ac0
|
@ -210,8 +210,7 @@ void Acc_CheckIfEmptyAccountExists (void)
|
|||
" AND usr_data.Password=''",
|
||||
ID) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes");
|
||||
free ((void *) Query);
|
||||
NumUsrs = (unsigned) DB_QuerySELECT_free (Query,&mysql_res,"can not get user's codes");
|
||||
|
||||
if (NumUsrs)
|
||||
{
|
||||
|
@ -639,7 +638,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
|||
" WHERE Nickname='%s' AND UsrCod<>%ld",
|
||||
NewNicknameWithoutArroba,Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
if (DB_QueryCOUNT (Query,"can not check if nickname already existed")) // A nickname of another user is the same that this nickname
|
||||
if (DB_QueryCOUNT_free (Query,"can not check if nickname already existed")) // A nickname of another user is the same that this nickname
|
||||
{
|
||||
Error = true;
|
||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||
|
@ -647,7 +646,6 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
|||
NewNicknameWithoutArroba);
|
||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
||||
}
|
||||
free ((void *) Query);
|
||||
}
|
||||
else // New nickname is not valid
|
||||
{
|
||||
|
@ -671,7 +669,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
|||
" WHERE E_mail='%s' AND Confirmed='Y'",
|
||||
NewEmail) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
if (DB_QueryCOUNT (Query,"can not check if email already existed")) // An email of another user is the same that my email
|
||||
if (DB_QueryCOUNT_free (Query,"can not check if email already existed")) // An email of another user is the same that my email
|
||||
{
|
||||
Error = true;
|
||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||
|
@ -679,7 +677,6 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
|||
NewEmail);
|
||||
Ale_ShowAlert (Ale_WARNING,Gbl.Alert.Txt);
|
||||
}
|
||||
free ((void *) Query);
|
||||
}
|
||||
else // New email is not valid
|
||||
{
|
||||
|
@ -779,9 +776,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
|
|||
(unsigned) Mnu_MENU_DEFAULT,
|
||||
(unsigned) Cfg_DEFAULT_COLUMNS) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
UsrDat->UsrCod = DB_QueryINSERTandReturnCode (QueryUsrData,
|
||||
"can not create user");
|
||||
free ((void *) QueryUsrData);
|
||||
UsrDat->UsrCod = DB_QueryINSERTandReturnCode_free (QueryUsrData,"can not create user");
|
||||
|
||||
/* Insert user's IDs as confirmed */
|
||||
for (NumID = 0;
|
||||
|
@ -798,8 +793,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
|
|||
UsrDat->IDs.List[NumID].Confirmed ? 'Y' :
|
||||
'N') < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryINSERT (QueryUsrIDs,"can not store user's ID when creating user");
|
||||
free ((void *) QueryUsrIDs);
|
||||
DB_QueryINSERT_free (QueryUsrIDs,"can not store user's ID when creating user");
|
||||
}
|
||||
|
||||
/***** Create directory for the user, if not exists *****/
|
||||
|
@ -1038,8 +1032,7 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
|||
if (asprintf (&Query,"DELETE FROM crs_usr_requests WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's requests for inscription");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's requests for inscription");
|
||||
|
||||
/***** Remove user from possible duplicate users *****/
|
||||
Dup_RemoveUsrFromDuplicated (UsrDat->UsrCod);
|
||||
|
@ -1048,8 +1041,7 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
|||
if (asprintf (&Query,"DELETE FROM crs_usr WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove a user from all courses");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove a user from all courses");
|
||||
|
||||
if (QuietOrVerbose == Cns_VERBOSE)
|
||||
{
|
||||
|
@ -1063,8 +1055,7 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
|||
if (asprintf (&Query,"DELETE FROM admin WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove a user as administrator");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove a user as administrator");
|
||||
|
||||
if (QuietOrVerbose == Cns_VERBOSE)
|
||||
{
|
||||
|
@ -1121,15 +1112,13 @@ void Acc_CompletelyEliminateAccount (struct UsrData *UsrDat,
|
|||
if (asprintf (&Query,"DELETE FROM connected WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove a user from table of connected users");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove a user from table of connected users");
|
||||
|
||||
/***** Remove all sessions of this user *****/
|
||||
if (asprintf (&Query,"DELETE FROM sessions WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove sessions of a user");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove sessions of a user");
|
||||
|
||||
/***** Remove social content associated to the user *****/
|
||||
Soc_RemoveUsrSocialContent (UsrDat->UsrCod);
|
||||
|
@ -1195,49 +1184,42 @@ static void Acc_RemoveUsr (struct UsrData *UsrDat)
|
|||
if (asprintf (&Query,"DELETE FROM usr_webs WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's webs / social networks");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's webs / social networks");
|
||||
|
||||
/***** Remove user's nicknames *****/
|
||||
if (asprintf (&Query,"DELETE FROM usr_nicknames WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's nicknames");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's nicknames");
|
||||
|
||||
/***** Remove user's emails *****/
|
||||
if (asprintf (&Query,"DELETE FROM pending_emails WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove pending user's emails");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove pending user's emails");
|
||||
|
||||
if (asprintf (&Query,"DELETE FROM usr_emails WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's emails");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's emails");
|
||||
|
||||
/***** Remove user's IDs *****/
|
||||
if (asprintf (&Query,"DELETE FROM usr_IDs WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's IDs");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's IDs");
|
||||
|
||||
/***** Remove user's last data *****/
|
||||
if (asprintf (&Query,"DELETE FROM usr_last WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's last data");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's last data");
|
||||
|
||||
/***** Remove user's data *****/
|
||||
if (asprintf (&Query,"DELETE FROM usr_data WHERE UsrCod=%ld",
|
||||
UsrDat->UsrCod) < 0)
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
DB_QueryDELETE (Query,"can not remove user's data");
|
||||
free ((void *) Query);
|
||||
DB_QueryDELETE_free (Query,"can not remove user's data");
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -25,8 +25,9 @@
|
|||
/*********************************** Headers *********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define _GNU_SOURCE // For asprintf
|
||||
#include <linux/stddef.h> // For NULL
|
||||
#include <stdio.h> // For fprintf
|
||||
#include <stdio.h> // For fprintf, asprintf
|
||||
#include <stdlib.h> // For malloc and free
|
||||
#include <string.h> // For string functions
|
||||
|
||||
|
@ -5119,15 +5120,16 @@ char *Act_GetActionTextFromDB (long ActCod,
|
|||
char ActTxt[Act_MAX_BYTES_ACTION_TXT + 1])
|
||||
{
|
||||
extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES];
|
||||
char Query[1024];
|
||||
char *Query;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
||||
/***** Get test for an action from database *****/
|
||||
sprintf (Query,"SELECT Txt FROM actions"
|
||||
" WHERE ActCod=%ld AND Language='%s'",
|
||||
ActCod,Txt_STR_LANG_ID[Txt_LANGUAGE_ES]); // !!! TODO: Replace Txt_LANGUAGE_ES by Gbl.Prefs.Language !!!
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get text for an action"))
|
||||
if (asprintf (&Query,"SELECT Txt FROM actions"
|
||||
" WHERE ActCod=%ld AND Language='%s'",
|
||||
ActCod,Txt_STR_LANG_ID[Txt_LANGUAGE_ES]) < 0) // !!! TODO: Replace Txt_LANGUAGE_ES by Gbl.Prefs.Language !!!
|
||||
Lay_NotEnoughMemoryExit ();
|
||||
if (DB_QuerySELECT_free (Query,&mysql_res,"can not get text for an action"))
|
||||
{
|
||||
/***** Get text *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
|
|
@ -355,10 +355,11 @@ En OpenSWAD:
|
|||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.7.4 (2018-10-18)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.7.5 (2018-10-18)"
|
||||
#define CSS_FILE "swad18.4.css"
|
||||
#define JS_FILE "swad17.17.1.js"
|
||||
/*
|
||||
Version 18.7.5: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236688 lines)
|
||||
Version 18.7.4: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236640 lines)
|
||||
Version 18.7.3: Oct 18, 2018 Changes in layout of list of attendance. (236608 lines)
|
||||
Version 18.7.2: Oct 18, 2018 Changes in layout of list of attendance. (236602 lines)
|
||||
|
|
|
@ -3066,6 +3066,24 @@ void DB_CloseDBConnection (void)
|
|||
/******************** Make a SELECT query from database **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned long DB_QuerySELECT_free (const char *Query,MYSQL_RES **mysql_res,const char *MsgError)
|
||||
{
|
||||
int Result;
|
||||
|
||||
/***** Query database *****/
|
||||
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
|
||||
free ((void *) Query);
|
||||
if (Result)
|
||||
DB_ExitOnMySQLError (MsgError);
|
||||
|
||||
/***** Store query result *****/
|
||||
if ((*mysql_res = mysql_store_result (&Gbl.mysql)) == NULL)
|
||||
DB_ExitOnMySQLError (MsgError);
|
||||
|
||||
/***** Return number of rows of result *****/
|
||||
return (unsigned long) mysql_num_rows (*mysql_res);
|
||||
}
|
||||
|
||||
unsigned long DB_QuerySELECT (const char *Query,MYSQL_RES **mysql_res,const char *MsgError)
|
||||
{
|
||||
/***** Query database *****/
|
||||
|
@ -3084,6 +3102,26 @@ unsigned long DB_QuerySELECT (const char *Query,MYSQL_RES **mysql_res,const char
|
|||
/**************** Make a SELECT COUNT query from database ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned long DB_QueryCOUNT_free (const char *Query,const char *MsgError)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
|
||||
/***** Make query "SELECT COUNT(*) FROM..." *****/
|
||||
DB_QuerySELECT_free (Query,&mysql_res,MsgError);
|
||||
|
||||
/***** Get number of rows *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
if (sscanf (row[0],"%lu",&NumRows) != 1)
|
||||
Lay_ShowErrorAndExit ("Error when counting number of rows.");
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
||||
return NumRows;
|
||||
}
|
||||
|
||||
unsigned long DB_QueryCOUNT (const char *Query,const char *MsgError)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -3108,6 +3146,17 @@ unsigned long DB_QueryCOUNT (const char *Query,const char *MsgError)
|
|||
/******************** Make an INSERT query in database ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void DB_QueryINSERT_free (const char *Query,const char *MsgError)
|
||||
{
|
||||
int Result;
|
||||
|
||||
/***** Query database *****/
|
||||
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
|
||||
free ((void *) Query);
|
||||
if (Result)
|
||||
DB_ExitOnMySQLError (MsgError);
|
||||
}
|
||||
|
||||
void DB_QueryINSERT (const char *Query,const char *MsgError)
|
||||
{
|
||||
/***** Query database *****/
|
||||
|
@ -3119,6 +3168,20 @@ void DB_QueryINSERT (const char *Query,const char *MsgError)
|
|||
/** Make an INSERT query in database and return code of last inserted item ***/
|
||||
/*****************************************************************************/
|
||||
|
||||
long DB_QueryINSERTandReturnCode_free (const char *Query,const char *MsgError)
|
||||
{
|
||||
int Result;
|
||||
|
||||
/***** Query database *****/
|
||||
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
|
||||
free ((void *) Query);
|
||||
if (Result)
|
||||
DB_ExitOnMySQLError (MsgError);
|
||||
|
||||
/***** Return the code of the inserted item *****/
|
||||
return (long) mysql_insert_id (&Gbl.mysql);
|
||||
}
|
||||
|
||||
long DB_QueryINSERTandReturnCode (const char *Query,const char *MsgError)
|
||||
{
|
||||
/***** Query database *****/
|
||||
|
@ -3158,6 +3221,17 @@ void DB_QueryUPDATE (const char *Query,const char *MsgError)
|
|||
/******************** Make a DELETE query from database **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void DB_QueryDELETE_free (const char *Query,const char *MsgError)
|
||||
{
|
||||
int Result;
|
||||
|
||||
/***** Query database *****/
|
||||
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
|
||||
free ((void *) Query);
|
||||
if (Result)
|
||||
DB_ExitOnMySQLError (MsgError);
|
||||
}
|
||||
|
||||
void DB_QueryDELETE (const char *Query,const char *MsgError)
|
||||
{
|
||||
/***** Query database *****/
|
||||
|
|
|
@ -36,13 +36,25 @@
|
|||
void DB_CreateTablesIfNotExist (void);
|
||||
void DB_OpenDBConnection (void);
|
||||
void DB_CloseDBConnection (void);
|
||||
|
||||
unsigned long DB_QuerySELECT_free (const char *Query,MYSQL_RES **mysql_res,const char *MsgError);
|
||||
unsigned long DB_QuerySELECT (const char *Query,MYSQL_RES **mysql_res,const char *MsgError);
|
||||
|
||||
unsigned long DB_QueryCOUNT_free (const char *Query,const char *MsgError);
|
||||
unsigned long DB_QueryCOUNT (const char *Query,const char *MsgError);
|
||||
|
||||
void DB_QueryINSERT_free (const char *Query,const char *MsgError);
|
||||
void DB_QueryINSERT (const char *Query,const char *MsgError);
|
||||
|
||||
long DB_QueryINSERTandReturnCode_free (const char *Query,const char *MsgError);
|
||||
long DB_QueryINSERTandReturnCode (const char *Query,const char *MsgError);
|
||||
|
||||
void DB_QueryREPLACE (const char *Query,const char *MsgError);
|
||||
void DB_QueryUPDATE (const char *Query,const char *MsgError);
|
||||
|
||||
void DB_QueryDELETE_free (const char *Query,const char *MsgError);
|
||||
void DB_QueryDELETE (const char *Query,const char *MsgError);
|
||||
|
||||
void DB_Query (const char *Query,const char *MsgError);
|
||||
void DB_FreeMySQLResult (MYSQL_RES **mysql_res);
|
||||
void DB_ExitOnMySQLError (const char *Message);
|
||||
|
|
Loading…
Reference in New Issue
Block a user