mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-10 10:45:23 +02:00
Version 22.52: Oct 28, 2022 Code refactoring in plugins.
This commit is contained in:
parent
a63d68f746
commit
063d4d0490
|
@ -605,7 +605,7 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
|
||||||
|
|
||||||
TODO: Attach pdf files in multimedia.
|
TODO: Attach pdf files in multimedia.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 22.51 (2022-10-27)"
|
#define Log_PLATFORM_VERSION "SWAD 22.52 (2022-10-28)"
|
||||||
#define CSS_FILE "swad22.49.4.css"
|
#define CSS_FILE "swad22.49.4.css"
|
||||||
#define JS_FILE "swad22.49.js"
|
#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...
|
Al subir cosas para los grupos, en documentos, resltar más los grupos porque no son conscientes...
|
||||||
Exportar listas en CSV.
|
Exportar listas en CSV.
|
||||||
|
|
||||||
|
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.51: Oct 27, 2022 New module swad_process. (333586 lines)
|
||||||
Version 22.50.8: Oct 20, 2022 Code refactoring in files. (333498 lines)
|
Version 22.50.8: Oct 20, 2022 Code refactoring in files. (333498 lines)
|
||||||
Version 22.50.7: Oct 20, 2022 Code refactoring in files. (333496 lines)
|
Version 22.50.7: Oct 20, 2022 Code refactoring in files. (333496 lines)
|
||||||
|
|
|
@ -36,6 +36,12 @@
|
||||||
#define Cns_MAX_CHARS_WWW (256 - 1) // 255: max. number of chars of a URL
|
#define Cns_MAX_CHARS_WWW (256 - 1) // 255: max. number of chars of a URL
|
||||||
#define Cns_MAX_BYTES_WWW Cns_MAX_CHARS_WWW // 255
|
#define Cns_MAX_BYTES_WWW Cns_MAX_CHARS_WWW // 255
|
||||||
|
|
||||||
|
#define Cns_MAX_CHARS_IP (3 + 1 + 3 + 1 + 3 + 1 + 3) // 15: max. number of chars of an IP address
|
||||||
|
// Example: 255.255.255.255
|
||||||
|
// 3+1+3+1+3+1+3
|
||||||
|
// 123456789012345
|
||||||
|
#define Cns_MAX_BYTES_IP Cns_MAX_CHARS_IP // 15
|
||||||
|
|
||||||
#define Cns_MAX_CHARS_DATE (16 - 1) // 15
|
#define Cns_MAX_CHARS_DATE (16 - 1) // 15
|
||||||
#define Cns_MAX_BYTES_DATE ((Cns_MAX_CHARS_DATE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 255
|
#define Cns_MAX_BYTES_DATE ((Cns_MAX_CHARS_DATE + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 255
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,7 @@ void Cry_EncryptSHA512Base64 (const char *PlainText,
|
||||||
void Cry_CreateUniqueNameEncrypted (char *UniqueNameEncrypted)
|
void Cry_CreateUniqueNameEncrypted (char *UniqueNameEncrypted)
|
||||||
{
|
{
|
||||||
static unsigned NumCall = 0; // When this function is called several times in the same execution of the program, each time a new name is created
|
static unsigned NumCall = 0; // When this function is called several times in the same execution of the program, each time a new name is created
|
||||||
char UniqueNamePlain[Par_MAX_BYTES_IP +
|
char UniqueNamePlain[Cns_MAX_BYTES_IP +
|
||||||
Cns_MAX_DECIMAL_DIGITS_LONG +
|
Cns_MAX_DECIMAL_DIGITS_LONG +
|
||||||
Cns_MAX_DECIMAL_DIGITS_LONG +
|
Cns_MAX_DECIMAL_DIGITS_LONG +
|
||||||
Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
Cns_MAX_DECIMAL_DIGITS_UINT + 1];
|
||||||
|
|
|
@ -1199,7 +1199,7 @@ mysql> DESCRIBE exa_log;
|
||||||
"QstInd INT NOT NULL DEFAULT -1,"
|
"QstInd INT NOT NULL DEFAULT -1,"
|
||||||
"CanAnswer ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
"CanAnswer ENUM('N','Y') NOT NULL DEFAULT 'N',"
|
||||||
"ClickTime DATETIME NOT NULL,"
|
"ClickTime DATETIME NOT NULL,"
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"UNIQUE INDEX(LogCod),"
|
"UNIQUE INDEX(LogCod),"
|
||||||
"UNIQUE INDEX(PrnCod,LogCod),"
|
"UNIQUE INDEX(PrnCod,LogCod),"
|
||||||
"INDEX(ClickTime))");
|
"INDEX(ClickTime))");
|
||||||
|
@ -1445,7 +1445,7 @@ mysql> DESCRIBE fir_banned;
|
||||||
3 rows in set (0.00 sec)
|
3 rows in set (0.00 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_banned ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_banned ("
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"BanTime DATETIME NOT NULL,"
|
"BanTime DATETIME NOT NULL,"
|
||||||
"UnbanTime DATETIME NOT NULL,"
|
"UnbanTime DATETIME NOT NULL,"
|
||||||
"INDEX(IP,UnbanTime),"
|
"INDEX(IP,UnbanTime),"
|
||||||
|
@ -1465,7 +1465,7 @@ mysql> DESCRIBE fir_log;
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_log ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS fir_log ("
|
||||||
"ClickTime DATETIME NOT NULL,"
|
"ClickTime DATETIME NOT NULL,"
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"INDEX(ClickTime),"
|
"INDEX(ClickTime),"
|
||||||
"INDEX(IP))");
|
"INDEX(IP))");
|
||||||
|
|
||||||
|
@ -2072,7 +2072,7 @@ mysql> DESCRIBE log_recent;
|
||||||
"ClickTime DATETIME NOT NULL,"
|
"ClickTime DATETIME NOT NULL,"
|
||||||
"TimeToGenerate INT NOT NULL,"
|
"TimeToGenerate INT NOT NULL,"
|
||||||
"TimeToSend INT NOT NULL,"
|
"TimeToSend INT NOT NULL,"
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"UNIQUE INDEX(LogCod),"
|
"UNIQUE INDEX(LogCod),"
|
||||||
"INDEX(ActCod),"
|
"INDEX(ActCod),"
|
||||||
"INDEX(CtyCod),"
|
"INDEX(CtyCod),"
|
||||||
|
@ -2463,7 +2463,7 @@ mysql> DESCRIBE plg_plugins;
|
||||||
"Logo VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_LOGO
|
"Logo VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_LOGO
|
||||||
"AppKey VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_APP_KEY
|
"AppKey VARCHAR(31) NOT NULL," // Plg_MAX_BYTES_PLUGIN_APP_KEY
|
||||||
"URL VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW
|
"URL VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"UNIQUE INDEX(PlgCod))");
|
"UNIQUE INDEX(PlgCod))");
|
||||||
|
|
||||||
/***** Table prg_clipboards *****/
|
/***** Table prg_clipboards *****/
|
||||||
|
@ -2880,7 +2880,7 @@ mysql> DESCRIBE set_ip_settings;
|
||||||
10 rows in set (0,01 sec)
|
10 rows in set (0,01 sec)
|
||||||
*/
|
*/
|
||||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS set_ip_settings ("
|
DB_CreateTable ("CREATE TABLE IF NOT EXISTS set_ip_settings ("
|
||||||
"IP CHAR(15) NOT NULL," // Par_MAX_BYTES_IP
|
"IP CHAR(15) NOT NULL," // Cns_MAX_BYTES_IP
|
||||||
"UsrCod INT NOT NULL DEFAULT -1,"
|
"UsrCod INT NOT NULL DEFAULT -1,"
|
||||||
"LastChange DATETIME NOT NULL,"
|
"LastChange DATETIME NOT NULL,"
|
||||||
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
|
"FirstDayOfWeek TINYINT NOT NULL DEFAULT 0,"
|
||||||
|
|
|
@ -235,7 +235,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
|
||||||
int QstInd;
|
int QstInd;
|
||||||
bool UsrCouldAnswer;
|
bool UsrCouldAnswer;
|
||||||
time_t ClickTimeUTC;
|
time_t ClickTimeUTC;
|
||||||
char IP[Par_MAX_BYTES_IP + 1];
|
char IP[Cns_MAX_BYTES_IP + 1];
|
||||||
char *Id;
|
char *Id;
|
||||||
size_t Length;
|
size_t Length;
|
||||||
char Anonymized[14 + 1]; // ***…***
|
char Anonymized[14 + 1]; // ***…***
|
||||||
|
|
|
@ -326,7 +326,6 @@ void Gbl_Cleanup (void)
|
||||||
Ctr_FreeListCenters ();
|
Ctr_FreeListCenters ();
|
||||||
Cty_FreeListCountries ();
|
Cty_FreeListCountries ();
|
||||||
Lnk_FreeListLinks ();
|
Lnk_FreeListLinks ();
|
||||||
Plg_FreeListPlugins ();
|
|
||||||
|
|
||||||
for (Role = (Rol_Role_t) 0;
|
for (Role = (Rol_Role_t) 0;
|
||||||
Role <= (Rol_Role_t) (Rol_NUM_ROLES - 1);
|
Role <= (Rol_Role_t) (Rol_NUM_ROLES - 1);
|
||||||
|
|
|
@ -122,11 +122,6 @@ struct Globals
|
||||||
char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1];
|
char Str[Sch_MAX_BYTES_STRING_TO_FIND + 1];
|
||||||
bool LogSearch;
|
bool LogSearch;
|
||||||
} Search;
|
} Search;
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned Num; // Number of plugins
|
|
||||||
struct Plg_Plugin *Lst; // List of plugins
|
|
||||||
} Plugins;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool IsWebService; // Must generate HTML output (IsWebService==false) or SOAP-XML output (IsWebService==true)?
|
bool IsWebService; // Must generate HTML output (IsWebService==false) or SOAP-XML output (IsWebService==true)?
|
||||||
|
|
|
@ -83,7 +83,7 @@ static struct
|
||||||
size_t LengthWithoutCRLF;
|
size_t LengthWithoutCRLF;
|
||||||
size_t LengthWithCRLF;
|
size_t LengthWithCRLF;
|
||||||
} Boundary;
|
} Boundary;
|
||||||
char IP[Par_MAX_BYTES_IP + 1];
|
char IP[Cns_MAX_BYTES_IP + 1];
|
||||||
} Par_Params =
|
} Par_Params =
|
||||||
{
|
{
|
||||||
.ContentReceivedByCGI = Act_CONT_NORM,
|
.ContentReceivedByCGI = Act_CONT_NORM,
|
||||||
|
|
|
@ -63,12 +63,6 @@ typedef enum
|
||||||
Par_PARAM_MULTIPLE,
|
Par_PARAM_MULTIPLE,
|
||||||
} Par_ParamType_t; // Parameter is present only one time / multiple times
|
} Par_ParamType_t; // Parameter is present only one time / multiple times
|
||||||
|
|
||||||
#define Par_MAX_CHARS_IP (3 + 1 + 3 + 1 + 3 + 1 + 3) // 15: max. number of chars of an IP address
|
|
||||||
// Example: 255.255.255.255
|
|
||||||
// 3+1+3+1+3+1+3
|
|
||||||
// 123456789012345
|
|
||||||
#define Par_MAX_BYTES_IP Par_MAX_CHARS_IP // 15
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
111
swad_plugin.c
111
swad_plugin.c
|
@ -58,10 +58,20 @@ TODO: Check if web service is called from an authorized IP.
|
||||||
extern struct Globals Gbl;
|
extern struct Globals Gbl;
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Private variables *****************************/
|
/******************************* Private types *******************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static struct Plg_Plugin *Plg_EditingPlg = NULL; // Static variable to keep the plugin being edited
|
struct Plg_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
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************************** Private prototypes ****************************/
|
/***************************** Private prototypes ****************************/
|
||||||
|
@ -69,9 +79,10 @@ static struct Plg_Plugin *Plg_EditingPlg = NULL; // Static variable to keep the
|
||||||
|
|
||||||
static void Plg_PutIconToEditPlugins (__attribute__((unused)) void *Args);
|
static void Plg_PutIconToEditPlugins (__attribute__((unused)) void *Args);
|
||||||
static void Plg_EditPluginsInternal (void);
|
static void Plg_EditPluginsInternal (void);
|
||||||
static void Plg_ListPluginsForEdition (void);
|
static void Plg_FreeListPlugins (struct Plg_Plugins *Plugins);
|
||||||
|
static void Plg_ListPluginsForEdition (struct Plg_Plugins *Plugins);
|
||||||
static void Plg_PutParamPlgCod (void *PlgCod);
|
static void Plg_PutParamPlgCod (void *PlgCod);
|
||||||
static void Plg_GetListPlugins (void);
|
static void Plg_GetListPlugins (struct Plg_Plugins *Plugins);
|
||||||
static void Plg_PutFormToCreatePlugin (void);
|
static void Plg_PutFormToCreatePlugin (void);
|
||||||
static void Plg_PutHeadPlugins (void);
|
static void Plg_PutHeadPlugins (void);
|
||||||
|
|
||||||
|
@ -91,6 +102,7 @@ void Plg_ListPlugins (void)
|
||||||
struct Plg_Plugin *Plg;
|
struct Plg_Plugin *Plg;
|
||||||
char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1];
|
char URL[Cns_MAX_BYTES_WWW + Cns_BYTES_SESSION_ID + 1];
|
||||||
char *Icon;
|
char *Icon;
|
||||||
|
struct Plg_Plugins Plugins;
|
||||||
|
|
||||||
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
|
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
|
||||||
{
|
{
|
||||||
|
@ -99,7 +111,7 @@ void Plg_ListPlugins (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Get list of plugins *****/
|
/***** Get list of plugins *****/
|
||||||
Plg_GetListPlugins ();
|
Plg_GetListPlugins (&Plugins);
|
||||||
|
|
||||||
/***** Begin box and table *****/
|
/***** Begin box and table *****/
|
||||||
Box_BoxTableBegin (NULL,Txt_Plugins,
|
Box_BoxTableBegin (NULL,Txt_Plugins,
|
||||||
|
@ -116,10 +128,10 @@ void Plg_ListPlugins (void)
|
||||||
|
|
||||||
/***** Write all plugins *****/
|
/***** Write all plugins *****/
|
||||||
for (NumPlg = 0;
|
for (NumPlg = 0;
|
||||||
NumPlg < Gbl.Plugins.Num;
|
NumPlg < Plugins.Num;
|
||||||
NumPlg++)
|
NumPlg++)
|
||||||
{
|
{
|
||||||
Plg = &(Gbl.Plugins.Lst[NumPlg]);
|
Plg = &Plugins.Lst[NumPlg];
|
||||||
|
|
||||||
snprintf (URL,sizeof (URL),"%s%s",Plg->URL,Gbl.Session.Id);
|
snprintf (URL,sizeof (URL),"%s%s",Plg->URL,Gbl.Session.Id);
|
||||||
|
|
||||||
|
@ -132,7 +144,7 @@ void Plg_ListPlugins (void)
|
||||||
HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\""
|
HTM_A_Begin ("href=\"%s\" title=\"%s\" target=\"_blank\""
|
||||||
" class=\"DAT_%s\"",
|
" class=\"DAT_%s\"",
|
||||||
URL,Plg->Name,The_GetSuffix ());
|
URL,Plg->Name,The_GetSuffix ());
|
||||||
if (asprintf (&Icon,"%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo) < 0)
|
if (asprintf (&Icon,"%s24x24.gif",Plugins.Lst[NumPlg].Logo) < 0)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plg->Name,
|
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plg->Name,
|
||||||
"class=\"ICO40x40\"");
|
"class=\"ICO40x40\"");
|
||||||
|
@ -155,7 +167,7 @@ void Plg_ListPlugins (void)
|
||||||
Box_BoxTableEnd ();
|
Box_BoxTableEnd ();
|
||||||
|
|
||||||
/***** Free list of plugins *****/
|
/***** Free list of plugins *****/
|
||||||
Plg_FreeListPlugins ();
|
Plg_FreeListPlugins (&Plugins);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -187,9 +199,10 @@ void Plg_EditPlugins (void)
|
||||||
static void Plg_EditPluginsInternal (void)
|
static void Plg_EditPluginsInternal (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Plugins;
|
extern const char *Txt_Plugins;
|
||||||
|
struct Plg_Plugins Plugins;
|
||||||
|
|
||||||
/***** Get list of plugins *****/
|
/***** Get list of plugins *****/
|
||||||
Plg_GetListPlugins ();
|
Plg_GetListPlugins (&Plugins);
|
||||||
|
|
||||||
/***** Begin box *****/
|
/***** Begin box *****/
|
||||||
Box_BoxBegin (NULL,Txt_Plugins,
|
Box_BoxBegin (NULL,Txt_Plugins,
|
||||||
|
@ -200,21 +213,21 @@ static void Plg_EditPluginsInternal (void)
|
||||||
Plg_PutFormToCreatePlugin ();
|
Plg_PutFormToCreatePlugin ();
|
||||||
|
|
||||||
/***** List current plugins *****/
|
/***** List current plugins *****/
|
||||||
if (Gbl.Plugins.Num)
|
if (Plugins.Num)
|
||||||
Plg_ListPluginsForEdition ();
|
Plg_ListPluginsForEdition (&Plugins);
|
||||||
|
|
||||||
/***** End box *****/
|
/***** End box *****/
|
||||||
Box_BoxEnd ();
|
Box_BoxEnd ();
|
||||||
|
|
||||||
/***** Free list of plugins *****/
|
/***** Free list of plugins *****/
|
||||||
Plg_FreeListPlugins ();
|
Plg_FreeListPlugins (&Plugins);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************* Get list of current plugins ***********************/
|
/************************* Get list of current plugins ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Plg_GetListPlugins (void)
|
static void Plg_GetListPlugins (struct Plg_Plugins *Plugins)
|
||||||
{
|
{
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
@ -222,19 +235,19 @@ static void Plg_GetListPlugins (void)
|
||||||
struct Plg_Plugin *Plg;
|
struct Plg_Plugin *Plg;
|
||||||
|
|
||||||
/***** Get plugins from database *****/
|
/***** Get plugins from database *****/
|
||||||
if ((Gbl.Plugins.Num = Plg_DB_GetListPlugins (&mysql_res))) // Plugins found...
|
if ((Plugins->Num = Plg_DB_GetListPlugins (&mysql_res))) // Plugins found...
|
||||||
{
|
{
|
||||||
/***** Create list with plugins *****/
|
/***** Create list with plugins *****/
|
||||||
if ((Gbl.Plugins.Lst = calloc ((size_t) Gbl.Plugins.Num,
|
if ((Plugins->Lst = calloc ((size_t) Plugins->Num,
|
||||||
sizeof (*Gbl.Plugins.Lst))) == NULL)
|
sizeof (*Plugins->Lst))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Get the plugins *****/
|
/***** Get the plugins *****/
|
||||||
for (NumPlg = 0;
|
for (NumPlg = 0;
|
||||||
NumPlg < Gbl.Plugins.Num;
|
NumPlg < Plugins->Num;
|
||||||
NumPlg++)
|
NumPlg++)
|
||||||
{
|
{
|
||||||
Plg = &(Gbl.Plugins.Lst[NumPlg]);
|
Plg = &Plugins->Lst[NumPlg];
|
||||||
|
|
||||||
/* Get next plugin */
|
/* Get next plugin */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -253,6 +266,8 @@ static void Plg_GetListPlugins (void)
|
||||||
Str_Copy (Plg->IP ,row[6],sizeof (Plg->IP ) - 1);
|
Str_Copy (Plg->IP ,row[6],sizeof (Plg->IP ) - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
Plugins->Lst = NULL;
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
@ -310,14 +325,15 @@ bool Plg_GetDataOfPluginByCod (struct Plg_Plugin *Plg)
|
||||||
/*************************** Free list of plugins ****************************/
|
/*************************** Free list of plugins ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Plg_FreeListPlugins (void)
|
static void Plg_FreeListPlugins (struct Plg_Plugins *Plugins)
|
||||||
{
|
{
|
||||||
if (Gbl.Plugins.Lst)
|
if (Plugins->Num)
|
||||||
|
if (Plugins->Lst)
|
||||||
{
|
{
|
||||||
/***** Free memory used by the list of plugins *****/
|
/***** Free memory used by the list of plugins *****/
|
||||||
free (Gbl.Plugins.Lst);
|
free (Plugins->Lst);
|
||||||
Gbl.Plugins.Lst = NULL;
|
Plugins->Lst = NULL;
|
||||||
Gbl.Plugins.Num = 0;
|
Plugins->Num = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,7 +341,7 @@ void Plg_FreeListPlugins (void)
|
||||||
/****************************** List all plugins *****************************/
|
/****************************** List all plugins *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Plg_ListPluginsForEdition (void)
|
static void Plg_ListPluginsForEdition (struct Plg_Plugins *Plugins)
|
||||||
{
|
{
|
||||||
unsigned NumPlg;
|
unsigned NumPlg;
|
||||||
struct Plg_Plugin *Plg;
|
struct Plg_Plugin *Plg;
|
||||||
|
@ -339,10 +355,10 @@ static void Plg_ListPluginsForEdition (void)
|
||||||
|
|
||||||
/***** Write all plugins *****/
|
/***** Write all plugins *****/
|
||||||
for (NumPlg = 0;
|
for (NumPlg = 0;
|
||||||
NumPlg < Gbl.Plugins.Num;
|
NumPlg < Plugins->Num;
|
||||||
NumPlg++)
|
NumPlg++)
|
||||||
{
|
{
|
||||||
Plg = &Gbl.Plugins.Lst[NumPlg];
|
Plg = &Plugins->Lst[NumPlg];
|
||||||
|
|
||||||
/* Row begin */
|
/* Row begin */
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -361,9 +377,9 @@ static void Plg_ListPluginsForEdition (void)
|
||||||
/* Plugin logo */
|
/* Plugin logo */
|
||||||
// TODO: Change plugin icons to 32x32
|
// TODO: Change plugin icons to 32x32
|
||||||
HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\"");
|
HTM_TD_Begin ("class=\"CM\" style=\"width:45px;\"");
|
||||||
if (asprintf (&Icon,"%s24x24.gif",Gbl.Plugins.Lst[NumPlg].Logo) < 0)
|
if (asprintf (&Icon,"%s24x24.gif",Plugins->Lst[NumPlg].Logo) < 0)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Gbl.Plugins.Lst[NumPlg].Name,
|
HTM_IMG (Cfg_URL_ICON_PLUGINS_PUBLIC,Icon,Plugins->Lst[NumPlg].Name,
|
||||||
"class=\"ICO40x40\"");
|
"class=\"ICO40x40\"");
|
||||||
free (Icon);
|
free (Icon);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
@ -426,7 +442,7 @@ static void Plg_ListPluginsForEdition (void)
|
||||||
HTM_TD_Begin ("class=\"CM\"");
|
HTM_TD_Begin ("class=\"CM\"");
|
||||||
Frm_BeginForm (ActChgPlgIP);
|
Frm_BeginForm (ActChgPlgIP);
|
||||||
Plg_PutParamPlgCod (&Plg->PlgCod);
|
Plg_PutParamPlgCod (&Plg->PlgCod);
|
||||||
HTM_INPUT_TEXT ("IP",Par_MAX_CHARS_IP,Plg->IP,HTM_SUBMIT_ON_CHANGE,
|
HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg->IP,HTM_SUBMIT_ON_CHANGE,
|
||||||
"size=\"10\" class=\"INPUT_%s\"",
|
"size=\"10\" class=\"INPUT_%s\"",
|
||||||
The_GetSuffix ());
|
The_GetSuffix ());
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
@ -626,7 +642,8 @@ void Plg_ChangePlgLogo (void)
|
||||||
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
||||||
|
|
||||||
/***** Update logo *****/
|
/***** Update logo *****/
|
||||||
Str_Copy (Plg_EditingPlg->Logo,NewLogo,sizeof (Plg_EditingPlg->Logo) - 1);
|
Str_Copy (Plg_EditingPlg->Logo,NewLogo,
|
||||||
|
sizeof (Plg_EditingPlg->Logo) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -667,7 +684,8 @@ void Plg_ChangePlgAppKey (void)
|
||||||
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
||||||
|
|
||||||
/***** Update app key *****/
|
/***** Update app key *****/
|
||||||
Str_Copy (Plg_EditingPlg->AppKey,NewAppKey,sizeof (Plg_EditingPlg->AppKey) - 1);
|
Str_Copy (Plg_EditingPlg->AppKey,NewAppKey,
|
||||||
|
sizeof (Plg_EditingPlg->AppKey) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -708,7 +726,8 @@ void Plg_ChangePlgURL (void)
|
||||||
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
|
||||||
|
|
||||||
/***** Update URL *****/
|
/***** Update URL *****/
|
||||||
Str_Copy (Plg_EditingPlg->URL,NewURL,sizeof (Plg_EditingPlg->URL) - 1);
|
Str_Copy (Plg_EditingPlg->URL,NewURL,
|
||||||
|
sizeof (Plg_EditingPlg->URL) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -718,7 +737,7 @@ void Plg_ChangePlgURL (void)
|
||||||
void Plg_ChangePlgIP (void)
|
void Plg_ChangePlgIP (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_new_IP_address_is_X;
|
extern const char *Txt_The_new_IP_address_is_X;
|
||||||
char NewIP[Par_MAX_BYTES_IP + 1];
|
char NewIP[Cns_MAX_BYTES_IP + 1];
|
||||||
|
|
||||||
/***** Plugin constructor *****/
|
/***** Plugin constructor *****/
|
||||||
Plg_EditingPluginConstructor ();
|
Plg_EditingPluginConstructor ();
|
||||||
|
@ -729,7 +748,7 @@ void Plg_ChangePlgIP (void)
|
||||||
Err_WrongPluginExit ();
|
Err_WrongPluginExit ();
|
||||||
|
|
||||||
/* Get the new IP for the plugin */
|
/* Get the new IP for the plugin */
|
||||||
Par_GetParToText ("IP",NewIP,Par_MAX_BYTES_IP);
|
Par_GetParToText ("IP",NewIP,Cns_MAX_BYTES_IP);
|
||||||
|
|
||||||
/***** Get plugin data from the database *****/
|
/***** Get plugin data from the database *****/
|
||||||
Plg_GetDataOfPluginByCod (Plg_EditingPlg);
|
Plg_GetDataOfPluginByCod (Plg_EditingPlg);
|
||||||
|
@ -851,7 +870,7 @@ static void Plg_PutFormToCreatePlugin (void)
|
||||||
|
|
||||||
/***** Plugin IP address *****/
|
/***** Plugin IP address *****/
|
||||||
HTM_TD_Begin ("class=\"CM\"");
|
HTM_TD_Begin ("class=\"CM\"");
|
||||||
HTM_INPUT_TEXT ("IP",Par_MAX_CHARS_IP,Plg_EditingPlg->IP,
|
HTM_INPUT_TEXT ("IP",Cns_MAX_CHARS_IP,Plg_EditingPlg->IP,
|
||||||
HTM_DONT_SUBMIT_ON_CHANGE,
|
HTM_DONT_SUBMIT_ON_CHANGE,
|
||||||
"size=\"10\" class=\"INPUT_%s\""
|
"size=\"10\" class=\"INPUT_%s\""
|
||||||
" required=\"required\"",
|
" required=\"required\"",
|
||||||
|
@ -910,23 +929,13 @@ void Plg_ReceiveFormNewPlg (void)
|
||||||
Plg_EditingPluginConstructor ();
|
Plg_EditingPluginConstructor ();
|
||||||
|
|
||||||
/***** Get parameters from form *****/
|
/***** Get parameters from form *****/
|
||||||
/* Get plugin name */
|
/* Get plugin name, description, logo, application key, URL, IP address */
|
||||||
Par_GetParToText ("Name" ,Plg_EditingPlg->Name ,Plg_MAX_BYTES_PLUGIN_NAME);
|
Par_GetParToText ("Name" ,Plg_EditingPlg->Name ,Plg_MAX_BYTES_PLUGIN_NAME);
|
||||||
|
|
||||||
/* Get plugin description */
|
|
||||||
Par_GetParToText ("Description",Plg_EditingPlg->Description,Plg_MAX_BYTES_PLUGIN_DESCRIPTION);
|
Par_GetParToText ("Description",Plg_EditingPlg->Description,Plg_MAX_BYTES_PLUGIN_DESCRIPTION);
|
||||||
|
|
||||||
/* Get plugin logo */
|
|
||||||
Par_GetParToText ("Logo" ,Plg_EditingPlg->Logo ,Plg_MAX_BYTES_PLUGIN_LOGO);
|
Par_GetParToText ("Logo" ,Plg_EditingPlg->Logo ,Plg_MAX_BYTES_PLUGIN_LOGO);
|
||||||
|
|
||||||
/* Get plugin application key */
|
|
||||||
Par_GetParToText ("AppKey" ,Plg_EditingPlg->AppKey ,Plg_MAX_BYTES_PLUGIN_APP_KEY);
|
Par_GetParToText ("AppKey" ,Plg_EditingPlg->AppKey ,Plg_MAX_BYTES_PLUGIN_APP_KEY);
|
||||||
|
|
||||||
/* Get plugin URL */
|
|
||||||
Par_GetParToText ("URL" ,Plg_EditingPlg->URL ,Cns_MAX_BYTES_WWW);
|
Par_GetParToText ("URL" ,Plg_EditingPlg->URL ,Cns_MAX_BYTES_WWW);
|
||||||
|
Par_GetParToText ("IP" ,Plg_EditingPlg->IP ,Cns_MAX_BYTES_IP);
|
||||||
/* Get plugin IP address */
|
|
||||||
Par_GetParToText ("IP",Plg_EditingPlg->IP,Par_MAX_BYTES_IP);
|
|
||||||
|
|
||||||
if (Plg_EditingPlg->Name[0]) // If there's a plugin name
|
if (Plg_EditingPlg->Name[0]) // If there's a plugin name
|
||||||
{
|
{
|
||||||
|
@ -963,12 +972,8 @@ void Plg_ReceiveFormNewPlg (void)
|
||||||
|
|
||||||
static void Plg_EditingPluginConstructor (void)
|
static void Plg_EditingPluginConstructor (void)
|
||||||
{
|
{
|
||||||
/***** Pointer must be NULL *****/
|
|
||||||
if (Plg_EditingPlg != NULL)
|
|
||||||
Err_WrongPluginExit ();
|
|
||||||
|
|
||||||
/***** Allocate memory for plugin *****/
|
/***** Allocate memory for plugin *****/
|
||||||
if ((Plg_EditingPlg = malloc (sizeof (*Plg_EditingPlg))) == NULL)
|
if ((Plg_EditingPlg = malloc (sizeof (struct Plg_Plugin))) == NULL)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
|
|
||||||
/***** Reset plugin *****/
|
/***** Reset plugin *****/
|
||||||
|
|
|
@ -57,7 +57,7 @@ struct Plg_Plugin
|
||||||
char Logo[Plg_MAX_BYTES_PLUGIN_LOGO + 1];
|
char Logo[Plg_MAX_BYTES_PLUGIN_LOGO + 1];
|
||||||
char AppKey[Plg_MAX_BYTES_PLUGIN_APP_KEY + 1];
|
char AppKey[Plg_MAX_BYTES_PLUGIN_APP_KEY + 1];
|
||||||
char URL[Cns_MAX_BYTES_WWW + 1];
|
char URL[Cns_MAX_BYTES_WWW + 1];
|
||||||
char IP[Par_MAX_BYTES_IP + 1];
|
char IP[Cns_MAX_BYTES_IP + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -67,7 +67,6 @@ struct Plg_Plugin
|
||||||
void Plg_ListPlugins (void);
|
void Plg_ListPlugins (void);
|
||||||
void Plg_EditPlugins (void);
|
void Plg_EditPlugins (void);
|
||||||
bool Plg_GetDataOfPluginByCod (struct Plg_Plugin *Plg);
|
bool Plg_GetDataOfPluginByCod (struct Plg_Plugin *Plg);
|
||||||
void Plg_FreeListPlugins (void);
|
|
||||||
long Plg_GetParamPlgCod (void);
|
long Plg_GetParamPlgCod (void);
|
||||||
void Plg_RemovePlugin (void);
|
void Plg_RemovePlugin (void);
|
||||||
void Plg_RenamePlugin (void);
|
void Plg_RenamePlugin (void);
|
||||||
|
|
|
@ -127,7 +127,7 @@ void Plg_DB_ChangeURL (long PlgCod,
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Plg_DB_ChangeIP (long PlgCod,
|
void Plg_DB_ChangeIP (long PlgCod,
|
||||||
const char NewIP[Par_MAX_BYTES_IP + 1])
|
const char NewIP[Cns_MAX_BYTES_IP + 1])
|
||||||
{
|
{
|
||||||
DB_QueryUPDATE ("can not update the IP address of a plugin",
|
DB_QueryUPDATE ("can not update the IP address of a plugin",
|
||||||
"UPDATE plg_plugins"
|
"UPDATE plg_plugins"
|
||||||
|
|
|
@ -47,7 +47,7 @@ void Plg_DB_ChangeAppKey (long PlgCod,
|
||||||
void Plg_DB_ChangeURL (long PlgCod,
|
void Plg_DB_ChangeURL (long PlgCod,
|
||||||
const char NewURL[Cns_MAX_BYTES_WWW + 1]);
|
const char NewURL[Cns_MAX_BYTES_WWW + 1]);
|
||||||
void Plg_DB_ChangeIP (long PlgCod,
|
void Plg_DB_ChangeIP (long PlgCod,
|
||||||
const char NewIP[Par_MAX_BYTES_IP + 1]);
|
const char NewIP[Cns_MAX_BYTES_IP + 1]);
|
||||||
|
|
||||||
unsigned Plg_DB_GetListPlugins (MYSQL_RES **mysql_res);
|
unsigned Plg_DB_GetListPlugins (MYSQL_RES **mysql_res);
|
||||||
unsigned Plg_DB_GetDataOfPluginByCod (MYSQL_RES **mysql_res,long PlgCod);
|
unsigned Plg_DB_GetDataOfPluginByCod (MYSQL_RES **mysql_res,long PlgCod);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user