mirror of https://github.com/acanas/swad-core.git
Version 22.53: Oct 28, 2022 Code refactoring in mail domains.
This commit is contained in:
parent
063d4d0490
commit
0940ab845e
|
@ -605,7 +605,7 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
|||
|
||||
TODO: Attach pdf files in multimedia.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.52 (2022-10-28)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 22.53 (2022-10-28)"
|
||||
#define CSS_FILE "swad22.49.4.css"
|
||||
#define JS_FILE "swad22.49.js"
|
||||
/*
|
||||
|
@ -616,6 +616,7 @@ Que al subir un fichero por defecto est
|
|||
Al subir cosas para los grupos, en documentos, resltar más los grupos porque no son conscientes...
|
||||
Exportar listas en CSV.
|
||||
|
||||
Version 22.53: Oct 28, 2022 Code refactoring in mail domains. (333607 lines)
|
||||
Version 22.52: Oct 28, 2022 Code refactoring in plugins. (333589 lines)
|
||||
Version 22.51: Oct 27, 2022 New module swad_process. (333586 lines)
|
||||
Version 22.50.8: Oct 20, 2022 Code refactoring in files. (333498 lines)
|
||||
|
|
|
@ -228,10 +228,6 @@ void Gbl_InitializeGlobals (void)
|
|||
Gbl.Search.Str[0] = '\0';
|
||||
Gbl.Search.LogSearch = false;
|
||||
|
||||
Gbl.Mails.Num = 0;
|
||||
Gbl.Mails.Lst = NULL;
|
||||
Gbl.Mails.SelectedOrder = Mai_ORDER_DEFAULT;
|
||||
|
||||
Gbl.Links.Num = 0;
|
||||
Gbl.Links.Lst = NULL;
|
||||
|
||||
|
|
|
@ -105,12 +105,6 @@ struct Globals
|
|||
unsigned Num; // Number of degree types
|
||||
struct DegreeType *Lst; // List of degree types
|
||||
} DegTypes;
|
||||
struct
|
||||
{
|
||||
unsigned Num; // Number of mail domains
|
||||
struct Mail *Lst; // List of mail domains
|
||||
Mai_DomainsOrder_t SelectedOrder;
|
||||
} Mails;
|
||||
struct
|
||||
{
|
||||
unsigned Num; // Number of institutional links
|
||||
|
|
106
swad_mail.c
106
swad_mail.c
|
@ -54,6 +54,17 @@
|
|||
|
||||
extern struct Globals Gbl;
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************************* Private types *******************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
struct Mai_Mails
|
||||
{
|
||||
unsigned Num; // Number of mail domains
|
||||
struct Mail *Lst; // List of mail domains
|
||||
Mai_DomainsOrder_t SelectedOrder;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private variables *****************************/
|
||||
/*****************************************************************************/
|
||||
|
@ -65,14 +76,15 @@ static struct Mail *Mai_EditingMai = NULL; // Static variable to keep the mail d
|
|||
/***************************** Private prototypes ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_GetParamMaiOrder (void);
|
||||
static Mai_DomainsOrder_t Mai_GetParamMaiOrder (void);
|
||||
static void Mai_PutIconToEditMailDomains (__attribute__((unused)) void *Args);
|
||||
static void Mai_EditMailDomainsInternal (void);
|
||||
static void Mai_GetListMailDomainsAllowedForNotif (void);
|
||||
static void Mai_GetListMailDomainsAllowedForNotif (struct Mai_Mails *Mails);
|
||||
static void Mai_GetMailDomain (const char *Email,
|
||||
char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
||||
static void Mai_FreeListMailDomains (struct Mai_Mails *Mails);
|
||||
|
||||
static void Mai_ListMailDomainsForEdition (void);
|
||||
static void Mai_ListMailDomainsForEdition (const struct Mai_Mails *Mails);
|
||||
static void Mai_PutParamMaiCod (void *MaiCod);
|
||||
|
||||
static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName);
|
||||
|
@ -94,6 +106,8 @@ static void Mai_NewUsrEmail (struct Usr_Data *UsrDat,bool ItsMe);
|
|||
static void Mai_InsertMailKey (const char Email[Cns_MAX_BYTES_EMAIL_ADDRESS + 1],
|
||||
const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]);
|
||||
|
||||
static void Mai_InitializeMailDomainList (struct Mai_Mails *Mails);
|
||||
|
||||
static void Mai_EditingMailDomainConstructor (void);
|
||||
static void Mai_EditingMailDomainDestructor (void);
|
||||
|
||||
|
@ -109,12 +123,16 @@ void Mai_SeeMailDomains (void)
|
|||
extern const char *Txt_EMAIL_DOMAIN_ORDER[3];
|
||||
Mai_DomainsOrder_t Order;
|
||||
unsigned NumMai;
|
||||
struct Mai_Mails Mails;
|
||||
|
||||
/***** Initialize mail domain list *****/
|
||||
Mai_InitializeMailDomainList (&Mails);
|
||||
|
||||
/***** Get parameter with the type of order in the list of mail domains *****/
|
||||
Mai_GetParamMaiOrder ();
|
||||
Mails.SelectedOrder = Mai_GetParamMaiOrder ();
|
||||
|
||||
/***** Get list of mail domains *****/
|
||||
Mai_GetListMailDomainsAllowedForNotif ();
|
||||
Mai_GetListMailDomainsAllowedForNotif (&Mails);
|
||||
|
||||
/***** Begin box and table *****/
|
||||
if (Gbl.Usrs.Me.Role.Logged == Rol_SYS_ADM)
|
||||
|
@ -138,10 +156,10 @@ void Mai_SeeMailDomains (void)
|
|||
Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order);
|
||||
HTM_BUTTON_Submit_Begin (Txt_EMAIL_DOMAIN_HELP_ORDER[Order],
|
||||
"class=\"BT_LINK\"");
|
||||
if (Order == Gbl.Mails.SelectedOrder)
|
||||
if (Order == Mails.SelectedOrder)
|
||||
HTM_U_Begin ();
|
||||
HTM_Txt (Txt_EMAIL_DOMAIN_ORDER[Order]);
|
||||
if (Order == Gbl.Mails.SelectedOrder)
|
||||
if (Order == Mails.SelectedOrder)
|
||||
HTM_U_End ();
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
|
@ -152,22 +170,22 @@ void Mai_SeeMailDomains (void)
|
|||
|
||||
/***** Write all mail domains *****/
|
||||
for (NumMai = 0;
|
||||
NumMai < Gbl.Mails.Num;
|
||||
NumMai < Mails.Num;
|
||||
NumMai++)
|
||||
{
|
||||
/* Write data of this mail domain */
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Txt (Gbl.Mails.Lst[NumMai].Domain);
|
||||
HTM_Txt (Mails.Lst[NumMai].Domain);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"LT DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Txt (Gbl.Mails.Lst[NumMai].Info);
|
||||
HTM_Txt (Mails.Lst[NumMai].Info);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"RT DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Gbl.Mails.Lst[NumMai].NumUsrs);
|
||||
HTM_Unsigned (Mails.Lst[NumMai].NumUsrs);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -177,20 +195,20 @@ void Mai_SeeMailDomains (void)
|
|||
Box_BoxTableEnd ();
|
||||
|
||||
/***** Free list of mail domains *****/
|
||||
Mai_FreeListMailDomains ();
|
||||
Mai_FreeListMailDomains (&Mails);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******* Get parameter with the type or order in list of mail domains ********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_GetParamMaiOrder (void)
|
||||
static Mai_DomainsOrder_t Mai_GetParamMaiOrder (void)
|
||||
{
|
||||
Gbl.Mails.SelectedOrder = (Mai_DomainsOrder_t)
|
||||
Par_GetParToUnsignedLong ("Order",
|
||||
0,
|
||||
Mai_NUM_ORDERS - 1,
|
||||
(unsigned long) Mai_ORDER_DEFAULT);
|
||||
return (Mai_DomainsOrder_t)
|
||||
Par_GetParToUnsignedLong ("Order",
|
||||
0,
|
||||
Mai_NUM_ORDERS - 1,
|
||||
(unsigned long) Mai_ORDER_DEFAULT);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -221,25 +239,30 @@ void Mai_EditMailDomains (void)
|
|||
|
||||
static void Mai_EditMailDomainsInternal (void)
|
||||
{
|
||||
struct Mai_Mails Mails;
|
||||
|
||||
/***** Initialize mail domain list *****/
|
||||
Mai_InitializeMailDomainList (&Mails);
|
||||
|
||||
/***** Get list of mail domains *****/
|
||||
Mai_GetListMailDomainsAllowedForNotif ();
|
||||
Mai_GetListMailDomainsAllowedForNotif (&Mails);
|
||||
|
||||
/***** Put a form to create a new mail *****/
|
||||
Mai_PutFormToCreateMailDomain ();
|
||||
|
||||
/***** Forms to edit current mail domains *****/
|
||||
if (Gbl.Mails.Num)
|
||||
Mai_ListMailDomainsForEdition ();
|
||||
if (Mails.Num)
|
||||
Mai_ListMailDomainsForEdition (&Mails);
|
||||
|
||||
/***** Free list of mail domains *****/
|
||||
Mai_FreeListMailDomains ();
|
||||
Mai_FreeListMailDomains (&Mails);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************************** List all mail domains ***************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_GetListMailDomainsAllowedForNotif (void)
|
||||
static void Mai_GetListMailDomainsAllowedForNotif (struct Mai_Mails *Mails)
|
||||
{
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -256,19 +279,19 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
|
|||
Mai_DB_CreateTmpTables ();
|
||||
|
||||
/***** Get mail domains from database *****/
|
||||
if ((Gbl.Mails.Num = Mai_DB_GetMailDomains (&mysql_res))) // Mail domains found...
|
||||
if ((Mails->Num = Mai_DB_GetMailDomains (&mysql_res,Mails->SelectedOrder))) // Mail domains found...
|
||||
{
|
||||
/***** Create list with places *****/
|
||||
if ((Gbl.Mails.Lst = calloc ((size_t) Gbl.Mails.Num,
|
||||
sizeof (*Gbl.Mails.Lst))) == NULL)
|
||||
if ((Mails->Lst = calloc ((size_t) Mails->Num,
|
||||
sizeof (struct Mail))) == NULL)
|
||||
Err_NotEnoughMemoryExit ();
|
||||
|
||||
/***** Get the mail domains *****/
|
||||
for (NumMai = 0;
|
||||
NumMai < Gbl.Mails.Num;
|
||||
NumMai < Mails->Num;
|
||||
NumMai++)
|
||||
{
|
||||
Mai = &(Gbl.Mails.Lst[NumMai]);
|
||||
Mai = &(Mails->Lst[NumMai]);
|
||||
|
||||
/* Get next mail */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
@ -387,14 +410,14 @@ void Mai_GetDataOfMailDomainByCod (struct Mail *Mai)
|
|||
/************************** Free list of mail domains ************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Mai_FreeListMailDomains (void)
|
||||
static void Mai_FreeListMailDomains (struct Mai_Mails *Mails)
|
||||
{
|
||||
if (Gbl.Mails.Lst)
|
||||
if (Mails->Lst)
|
||||
{
|
||||
/***** Free memory used by the list of mail domains *****/
|
||||
free (Gbl.Mails.Lst);
|
||||
Gbl.Mails.Lst = NULL;
|
||||
Gbl.Mails.Num = 0;
|
||||
free (Mails->Lst);
|
||||
Mails->Lst = NULL;
|
||||
Mails->Num = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -402,7 +425,7 @@ void Mai_FreeListMailDomains (void)
|
|||
/************************** List all mail domains ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_ListMailDomainsForEdition (void)
|
||||
static void Mai_ListMailDomainsForEdition (const struct Mai_Mails *Mails)
|
||||
{
|
||||
extern const char *Hlp_START_Domains_edit;
|
||||
extern const char *Txt_Email_domains_allowed_for_notifications;
|
||||
|
@ -419,10 +442,10 @@ static void Mai_ListMailDomainsForEdition (void)
|
|||
|
||||
/***** Write all mail domains *****/
|
||||
for (NumMai = 0;
|
||||
NumMai < Gbl.Mails.Num;
|
||||
NumMai < Mails->Num;
|
||||
NumMai++)
|
||||
{
|
||||
Mai = &Gbl.Mails.Lst[NumMai];
|
||||
Mai = &Mails->Lst[NumMai];
|
||||
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
|
@ -1660,6 +1683,17 @@ bool Mai_ICanSeeOtherUsrEmail (const struct Usr_Data *UsrDat)
|
|||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Initialize mail domain list ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_InitializeMailDomainList (struct Mai_Mails *Mails)
|
||||
{
|
||||
Mails->Num = 0;
|
||||
Mails->Lst = NULL;
|
||||
Mails->SelectedOrder = Mai_ORDER_DEFAULT;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Mail domain constructor/destructor *******************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -61,7 +61,6 @@ struct Mail
|
|||
|
||||
void Mai_SeeMailDomains (void);
|
||||
void Mai_EditMailDomains (void);
|
||||
void Mai_FreeListMailDomains (void);
|
||||
|
||||
bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct Usr_Data *UsrDat);
|
||||
void Mai_WriteWarningEmailNotifications (void);
|
||||
|
|
|
@ -352,7 +352,7 @@ void Mai_DB_UpdateMailDomainName (long MaiCod,
|
|||
/****************************** Get mail domains *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Mai_DB_GetMailDomains (MYSQL_RES **mysql_res)
|
||||
unsigned Mai_DB_GetMailDomains (MYSQL_RES **mysql_res,Mai_DomainsOrder_t SelectedOrder)
|
||||
{
|
||||
static const char *OrderBySubQuery[Mai_NUM_ORDERS] =
|
||||
{
|
||||
|
@ -386,7 +386,7 @@ unsigned Mai_DB_GetMailDomains (MYSQL_RES **mysql_res)
|
|||
" (SELECT Domain COLLATE 'latin1_bin'"
|
||||
" FROM T2))"
|
||||
" ORDER BY %s", // COLLATE necessary to avoid error in comparisons
|
||||
OrderBySubQuery[Gbl.Mails.SelectedOrder]);
|
||||
OrderBySubQuery[SelectedOrder]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ void Mai_DB_CreateMailDomain (const struct Mail *Mai);
|
|||
void Mai_DB_UpdateMailDomainName (long MaiCod,
|
||||
const char *FieldName,const char *NewMaiName);
|
||||
|
||||
unsigned Mai_DB_GetMailDomains (MYSQL_RES **mysql_res);
|
||||
unsigned Mai_DB_GetMailDomains (MYSQL_RES **mysql_res,Mai_DomainsOrder_t SelectedOrder);
|
||||
unsigned Mai_DB_GetDataOfMailDomainByCod (MYSQL_RES **mysql_res,long MaiCod);
|
||||
bool Mai_DB_CheckIfMailDomainNameExists (const char *FieldName,const char *Name,long MaiCod);
|
||||
bool Mai_DB_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
|
||||
|
|
|
@ -63,15 +63,16 @@ extern struct Globals Gbl;
|
|||
|
||||
struct Plg_Plugins
|
||||
{
|
||||
unsigned Num; // Number of plugins
|
||||
struct Plg_Plugin *Lst; // List of plugins
|
||||
unsigned Num; // Number of plugins
|
||||
struct Plg_Plugin *Lst; // List of plugins
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Private global variables **************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static struct Plg_Plugin *Plg_EditingPlg; // Plugin being edited
|
||||
// Global because it's maintained from a-priori to a-posteriori functions
|
||||
static struct Plg_Plugin *Plg_EditingPlg; // Plugin being edited.
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Private prototypes ****************************/
|
||||
|
|
Loading…
Reference in New Issue