mirror of https://github.com/acanas/swad-core.git
Version 18.7.10
This commit is contained in:
parent
ecae582e1d
commit
04adb7ba16
121
swad_banner.c
121
swad_banner.c
|
@ -25,7 +25,9 @@
|
||||||
/********************************* Headers ***********************************/
|
/********************************* Headers ***********************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define _GNU_SOURCE // For asprintf
|
||||||
#include <linux/stddef.h> // For NULL
|
#include <linux/stddef.h> // For NULL
|
||||||
|
#include <stdio.h> // For asprintf
|
||||||
#include <stdlib.h> // For calloc
|
#include <stdlib.h> // For calloc
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
|
@ -101,6 +103,7 @@ void Ban_SeeBanners (void)
|
||||||
extern const char *Txt_Banners;
|
extern const char *Txt_Banners;
|
||||||
extern const char *Txt_No_banners;
|
extern const char *Txt_No_banners;
|
||||||
extern const char *Txt_New_banner;
|
extern const char *Txt_New_banner;
|
||||||
|
char *Query;
|
||||||
|
|
||||||
/***** Put contextual links *****/
|
/***** Put contextual links *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
@ -111,10 +114,12 @@ void Ban_SeeBanners (void)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Get list of banners *****/
|
/***** Get list of banners *****/
|
||||||
Ban_GetListBanners ("SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
if (asprintf (&Query,"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||||
" FROM banners"
|
" FROM banners"
|
||||||
" WHERE Hidden='N'"
|
" WHERE Hidden='N'"
|
||||||
" ORDER BY ShortName");
|
" ORDER BY ShortName") < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
Ban_GetListBanners (Query);
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Box_StartBox (NULL,Txt_Banners,Ban_PutFormToEditBanners,
|
Box_StartBox (NULL,Txt_Banners,Ban_PutFormToEditBanners,
|
||||||
|
@ -193,6 +198,7 @@ void Ban_EditBanners (void)
|
||||||
{
|
{
|
||||||
extern const char *Hlp_SYSTEM_Banners_edit;
|
extern const char *Hlp_SYSTEM_Banners_edit;
|
||||||
extern const char *Txt_Banners;
|
extern const char *Txt_Banners;
|
||||||
|
char *Query;
|
||||||
|
|
||||||
/***** Put contextual links *****/
|
/***** Put contextual links *****/
|
||||||
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
|
||||||
|
@ -203,8 +209,10 @@ void Ban_EditBanners (void)
|
||||||
fprintf (Gbl.F.Out,"</div>");
|
fprintf (Gbl.F.Out,"</div>");
|
||||||
|
|
||||||
/***** Get list of banners *****/
|
/***** Get list of banners *****/
|
||||||
Ban_GetListBanners ("SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
if (asprintf (&Query,"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||||
" FROM banners ORDER BY ShortName");
|
" FROM banners ORDER BY ShortName") < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
Ban_GetListBanners (Query);
|
||||||
|
|
||||||
/***** Start box *****/
|
/***** Start box *****/
|
||||||
Box_StartBox (NULL,Txt_Banners,Ban_PutIconToViewBanners,
|
Box_StartBox (NULL,Txt_Banners,Ban_PutIconToViewBanners,
|
||||||
|
@ -239,7 +247,7 @@ static void Ban_GetListBanners (const char *Query)
|
||||||
if (Gbl.DB.DatabaseIsOpen)
|
if (Gbl.DB.DatabaseIsOpen)
|
||||||
{
|
{
|
||||||
/***** Get banners from database *****/
|
/***** Get banners from database *****/
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get banners");
|
NumRows = DB_QuerySELECT_free (Query,&mysql_res,"can not get banners");
|
||||||
|
|
||||||
if (NumRows) // Banners found...
|
if (NumRows) // Banners found...
|
||||||
{
|
{
|
||||||
|
@ -297,7 +305,7 @@ static void Ban_GetListBanners (const char *Query)
|
||||||
|
|
||||||
void Ban_GetDataOfBannerByCod (struct Banner *Ban)
|
void Ban_GetDataOfBannerByCod (struct Banner *Ban)
|
||||||
{
|
{
|
||||||
char Query[1024];
|
char *Query;
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long NumRows;
|
unsigned long NumRows;
|
||||||
|
@ -310,10 +318,11 @@ void Ban_GetDataOfBannerByCod (struct Banner *Ban)
|
||||||
if (Ban->BanCod > 0)
|
if (Ban->BanCod > 0)
|
||||||
{
|
{
|
||||||
/***** Get data of a banner from database *****/
|
/***** Get data of a banner from database *****/
|
||||||
sprintf (Query,"SELECT Hidden,ShortName,FullName,Img,WWW"
|
if (asprintf (&Query,"SELECT Hidden,ShortName,FullName,Img,WWW"
|
||||||
" FROM banners WHERE BanCod=%ld",
|
" FROM banners WHERE BanCod=%ld",
|
||||||
Ban->BanCod);
|
Ban->BanCod) < 0)
|
||||||
NumRows = DB_QuerySELECT (Query,&mysql_res,"can not get data of a banner");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
NumRows = DB_QuerySELECT_free (Query,&mysql_res,"can not get data of a banner");
|
||||||
|
|
||||||
if (NumRows) // Banner found...
|
if (NumRows) // Banner found...
|
||||||
{
|
{
|
||||||
|
@ -506,7 +515,7 @@ long Ban_GetParamBanCod (void)
|
||||||
void Ban_RemoveBanner (void)
|
void Ban_RemoveBanner (void)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Banner_X_removed;
|
extern const char *Txt_Banner_X_removed;
|
||||||
char Query[512];
|
char *Query;
|
||||||
struct Banner Ban;
|
struct Banner Ban;
|
||||||
|
|
||||||
/***** Get banner code *****/
|
/***** Get banner code *****/
|
||||||
|
@ -517,8 +526,9 @@ void Ban_RemoveBanner (void)
|
||||||
Ban_GetDataOfBannerByCod (&Ban);
|
Ban_GetDataOfBannerByCod (&Ban);
|
||||||
|
|
||||||
/***** Remove banner *****/
|
/***** Remove banner *****/
|
||||||
sprintf (Query,"DELETE FROM banners WHERE BanCod=%ld",Ban.BanCod);
|
if (asprintf (&Query,"DELETE FROM banners WHERE BanCod=%ld",Ban.BanCod) < 0)
|
||||||
DB_QueryDELETE (Query,"can not remove a banner");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
DB_QueryDELETE_free (Query,"can not remove a banner");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
@ -558,7 +568,7 @@ static void Ban_ShowOrHideBanner (bool Hide)
|
||||||
{
|
{
|
||||||
extern const char *Txt_The_banner_X_is_now_hidden;
|
extern const char *Txt_The_banner_X_is_now_hidden;
|
||||||
extern const char *Txt_The_banner_X_is_now_visible;
|
extern const char *Txt_The_banner_X_is_now_visible;
|
||||||
char Query[256];
|
char *Query;
|
||||||
struct Banner Ban;
|
struct Banner Ban;
|
||||||
|
|
||||||
/***** Get banner code *****/
|
/***** Get banner code *****/
|
||||||
|
@ -571,12 +581,13 @@ static void Ban_ShowOrHideBanner (bool Hide)
|
||||||
/***** Mark file as hidden/visible in database *****/
|
/***** Mark file as hidden/visible in database *****/
|
||||||
if (Ban.Hidden != Hide)
|
if (Ban.Hidden != Hide)
|
||||||
{
|
{
|
||||||
sprintf (Query,"UPDATE banners SET Hidden='%c'"
|
if (asprintf (&Query,"UPDATE banners SET Hidden='%c'"
|
||||||
" WHERE BanCod=%ld",
|
" WHERE BanCod=%ld",
|
||||||
Hide ? 'Y' :
|
Hide ? 'Y' :
|
||||||
'N',
|
'N',
|
||||||
Ban.BanCod);
|
Ban.BanCod) < 0)
|
||||||
DB_QueryUPDATE (Query,"can not change status of a banner in database");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
DB_QueryUPDATE_free (Query,"can not change status of a banner in database");
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
@ -708,12 +719,14 @@ static void Ban_RenameBanner (Cns_ShrtOrFullName_t ShrtOrFullName)
|
||||||
|
|
||||||
static bool Ban_CheckIfBannerNameExists (const char *FieldName,const char *Name,long BanCod)
|
static bool Ban_CheckIfBannerNameExists (const char *FieldName,const char *Name,long BanCod)
|
||||||
{
|
{
|
||||||
char Query[128 + Ban_MAX_BYTES_FULL_NAME];
|
char *Query;
|
||||||
|
|
||||||
/***** Get number of banners with a name from database *****/
|
/***** Get number of banners with a name from database *****/
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM banners WHERE %s='%s' AND BanCod<>%ld",
|
if (asprintf (&Query,"SELECT COUNT(*) FROM banners"
|
||||||
FieldName,Name,BanCod);
|
" WHERE %s='%s' AND BanCod<>%ld",
|
||||||
return (DB_QueryCOUNT (Query,"can not check if the name of a banner already existed") != 0);
|
FieldName,Name,BanCod) < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
return (DB_QueryCOUNT_free (Query,"can not check if the name of a banner already existed") != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -722,12 +735,13 @@ static bool Ban_CheckIfBannerNameExists (const char *FieldName,const char *Name,
|
||||||
|
|
||||||
static void Ban_UpdateBanNameDB (long BanCod,const char *FieldName,const char *NewBanName)
|
static void Ban_UpdateBanNameDB (long BanCod,const char *FieldName,const char *NewBanName)
|
||||||
{
|
{
|
||||||
char Query[128 + Ban_MAX_BYTES_FULL_NAME];
|
char *Query;
|
||||||
|
|
||||||
/***** Update banner changing old name by new name *****/
|
/***** Update banner changing old name by new name *****/
|
||||||
sprintf (Query,"UPDATE banners SET %s='%s' WHERE BanCod=%ld",
|
if (asprintf (&Query,"UPDATE banners SET %s='%s' WHERE BanCod=%ld",
|
||||||
FieldName,NewBanName,BanCod);
|
FieldName,NewBanName,BanCod) < 0)
|
||||||
DB_QueryUPDATE (Query,"can not update the name of a banner");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
DB_QueryUPDATE_free (Query,"can not update the name of a banner");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -739,7 +753,7 @@ void Ban_ChangeBannerImg (void)
|
||||||
extern const char *Txt_The_new_image_is_X;
|
extern const char *Txt_The_new_image_is_X;
|
||||||
extern const char *Txt_You_can_not_leave_the_image_empty;
|
extern const char *Txt_You_can_not_leave_the_image_empty;
|
||||||
struct Banner *Ban;
|
struct Banner *Ban;
|
||||||
char Query[256 + Ban_MAX_BYTES_IMAGE];
|
char *Query;
|
||||||
char NewImg[Ban_MAX_BYTES_IMAGE + 1];
|
char NewImg[Ban_MAX_BYTES_IMAGE + 1];
|
||||||
|
|
||||||
Ban = &Gbl.Banners.EditingBan;
|
Ban = &Gbl.Banners.EditingBan;
|
||||||
|
@ -756,9 +770,10 @@ void Ban_ChangeBannerImg (void)
|
||||||
if (NewImg[0])
|
if (NewImg[0])
|
||||||
{
|
{
|
||||||
/* Update the table changing old image by new image */
|
/* Update the table changing old image by new image */
|
||||||
sprintf (Query,"UPDATE banners SET Img='%s' WHERE BanCod=%ld",
|
if (asprintf (&Query,"UPDATE banners SET Img='%s' WHERE BanCod=%ld",
|
||||||
NewImg,Ban->BanCod);
|
NewImg,Ban->BanCod) < 0)
|
||||||
DB_QueryUPDATE (Query,"can not update the image of a banner");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
DB_QueryUPDATE_free (Query,"can not update the image of a banner");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
@ -785,7 +800,7 @@ void Ban_ChangeBannerWWW (void)
|
||||||
extern const char *Txt_The_new_web_address_is_X;
|
extern const char *Txt_The_new_web_address_is_X;
|
||||||
extern const char *Txt_You_can_not_leave_the_web_address_empty;
|
extern const char *Txt_You_can_not_leave_the_web_address_empty;
|
||||||
struct Banner *Ban;
|
struct Banner *Ban;
|
||||||
char Query[256 + Cns_MAX_BYTES_WWW];
|
char *Query;
|
||||||
char NewWWW[Cns_MAX_BYTES_WWW + 1];
|
char NewWWW[Cns_MAX_BYTES_WWW + 1];
|
||||||
|
|
||||||
Ban = &Gbl.Banners.EditingBan;
|
Ban = &Gbl.Banners.EditingBan;
|
||||||
|
@ -802,9 +817,10 @@ void Ban_ChangeBannerWWW (void)
|
||||||
if (NewWWW[0])
|
if (NewWWW[0])
|
||||||
{
|
{
|
||||||
/* Update the table changing old WWW by new WWW */
|
/* Update the table changing old WWW by new WWW */
|
||||||
sprintf (Query,"UPDATE banners SET WWW='%s' WHERE BanCod=%ld",
|
if (asprintf (&Query,"UPDATE banners SET WWW='%s' WHERE BanCod=%ld",
|
||||||
NewWWW,Ban->BanCod);
|
NewWWW,Ban->BanCod) < 0)
|
||||||
DB_QueryUPDATE (Query,"can not update the web of a banner");
|
Lay_NotEnoughMemoryExit ();
|
||||||
|
DB_QueryUPDATE_free (Query,"can not update the web of a banner");
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
snprintf (Gbl.Alert.Txt,sizeof (Gbl.Alert.Txt),
|
||||||
|
@ -987,14 +1003,15 @@ void Ban_RecFormNewBanner (void)
|
||||||
static void Ban_CreateBanner (struct Banner *Ban)
|
static void Ban_CreateBanner (struct Banner *Ban)
|
||||||
{
|
{
|
||||||
extern const char *Txt_Created_new_banner_X;
|
extern const char *Txt_Created_new_banner_X;
|
||||||
char Query[256 + Ban_MAX_BYTES_SHRT_NAME + Ban_MAX_BYTES_FULL_NAME + Ban_MAX_BYTES_IMAGE + Cns_MAX_BYTES_WWW];
|
char *Query;
|
||||||
|
|
||||||
/***** Create a new banner *****/
|
/***** Create a new banner *****/
|
||||||
sprintf (Query,"INSERT INTO banners"
|
if (asprintf (&Query,"INSERT INTO banners"
|
||||||
" (Hidden,ShortName,FullName,Img,WWW)"
|
" (Hidden,ShortName,FullName,Img,WWW)"
|
||||||
" VALUES"
|
" VALUES"
|
||||||
" ('N','%s','%s','%s','%s')",
|
" ('N','%s','%s','%s','%s')",
|
||||||
Ban->ShrtName,Ban->FullName,Ban->Img,Ban->WWW);
|
Ban->ShrtName,Ban->FullName,Ban->Img,Ban->WWW) < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
DB_QueryINSERT (Query,"can not create banner");
|
DB_QueryINSERT (Query,"can not create banner");
|
||||||
|
|
||||||
/***** Write success message *****/
|
/***** Write success message *****/
|
||||||
|
@ -1010,16 +1027,18 @@ static void Ban_CreateBanner (struct Banner *Ban)
|
||||||
|
|
||||||
void Ban_WriteMenuWithBanners (void)
|
void Ban_WriteMenuWithBanners (void)
|
||||||
{
|
{
|
||||||
char Query[256];
|
char *Query;
|
||||||
unsigned NumBan;
|
unsigned NumBan;
|
||||||
|
|
||||||
/***** Get random banner *****/
|
/***** Get random banner *****/
|
||||||
sprintf (Query,"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
// The banner(s) will change once in a while
|
||||||
" FROM banners"
|
if (asprintf (&Query,"SELECT BanCod,Hidden,ShortName,FullName,Img,WWW"
|
||||||
" WHERE Hidden='N'"
|
" FROM banners"
|
||||||
" ORDER BY RAND(%lu) LIMIT %u",
|
" WHERE Hidden='N'"
|
||||||
(unsigned long) (Gbl.StartExecutionTimeUTC / Cfg_TIME_TO_CHANGE_BANNER),
|
" ORDER BY RAND(%lu) LIMIT %u",
|
||||||
Cfg_NUMBER_OF_BANNERS); // The banner(s) will change once in a while
|
(unsigned long) (Gbl.StartExecutionTimeUTC / Cfg_TIME_TO_CHANGE_BANNER),
|
||||||
|
Cfg_NUMBER_OF_BANNERS) < 0)
|
||||||
|
Lay_NotEnoughMemoryExit ();
|
||||||
Ban_GetListBanners (Query);
|
Ban_GetListBanners (Query);
|
||||||
|
|
||||||
/***** Write all the banners *****/
|
/***** Write all the banners *****/
|
||||||
|
|
|
@ -355,10 +355,11 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.7.9 (2018-10-19)"
|
#define Log_PLATFORM_VERSION "SWAD 18.7.10 (2018-10-19)"
|
||||||
#define CSS_FILE "swad18.4.css"
|
#define CSS_FILE "swad18.4.css"
|
||||||
#define JS_FILE "swad17.17.1.js"
|
#define JS_FILE "swad17.17.1.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.7.10: Oct 19, 2018 Some sprintf for database queries changed by asprintf. (236856 lines)
|
||||||
Version 18.7.9: Oct 19, 2018 Some sprintf for database queries changed by asprintf. (236836 lines)
|
Version 18.7.9: Oct 19, 2018 Some sprintf for database queries changed by asprintf. (236836 lines)
|
||||||
Version 18.7.8: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236788 lines)
|
Version 18.7.8: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236788 lines)
|
||||||
Version 18.7.7: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236750 lines)
|
Version 18.7.7: Oct 18, 2018 Some sprintf for database queries changed by asprintf. (236750 lines)
|
||||||
|
|
Loading…
Reference in New Issue