diff --git a/swad_banner_database.c b/swad_banner_database.c new file mode 100644 index 00000000..89458c15 --- /dev/null +++ b/swad_banner_database.c @@ -0,0 +1,252 @@ +// swad_banner_database.c: banners operations with database + +/* + SWAD (Shared Workspace At a Distance), + is a web platform developed at the University of Granada (Spain), + and used to support university teaching. + + This file is part of SWAD core. + Copyright (C) 1999-2021 Antonio Caņas Vargas + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*****************************************************************************/ +/********************************* Headers ***********************************/ +/*****************************************************************************/ + +// #include // For NULL +// #include // For calloc +// #include // For string functions + +#include "swad_banner.h" +#include "swad_banner_database.h" +// #include "swad_box.h" +// #include "swad_constant.h" +#include "swad_config.h" +#include "swad_database.h" +// #include "swad_error.h" +// #include "swad_form.h" +#include "swad_global.h" +// #include "swad_HTML.h" +// #include "swad_language.h" +// #include "swad_link.h" +// #include "swad_parameter.h" +// #include "swad_photo.h" + +/*****************************************************************************/ +/************** External global variables from others modules ****************/ +/*****************************************************************************/ + +extern struct Globals Gbl; + +/*****************************************************************************/ +/***************************** Private constants *****************************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/******************************* Private types *******************************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/***************************** Private variables *****************************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/***************************** Private prototypes ****************************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/************************** Get list of all banners **************************/ +/*****************************************************************************/ + +unsigned Ban_DB_GetAllBanners (MYSQL_RES **mysql_res) + { + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get banners", + "SELECT BanCod," // row[0] + "Hidden," // row[1] + "ShortName," // row[2] + "FullName," // row[3] + "Img," // row[4] + "WWW" // row[5] + " FROM ban_banners" + " ORDER BY ShortName"); + } + +/*****************************************************************************/ +/********************** Get list of visible banners **************************/ +/*****************************************************************************/ + +unsigned Ban_DB_GetVisibleBanners (MYSQL_RES **mysql_res) + { + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get banners", + "SELECT BanCod," // row[0] + "Hidden," // row[1] + "ShortName," // row[2] + "FullName," // row[3] + "Img," // row[4] + "WWW" // row[5] + " FROM ban_banners" + " WHERE Hidden='N'" + " ORDER BY ShortName"); + } + +/*****************************************************************************/ +/********************** Get list of visible banners **************************/ +/*****************************************************************************/ + +unsigned Ban_DB_GetRandomBanners (MYSQL_RES **mysql_res) + { + // The banner(s) will change once in a while + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get banners", + "SELECT BanCod," // row[0] + "Hidden," // row[1] + "ShortName," // row[2] + "FullName," // row[3] + "Img," // row[4] + "WWW" // row[5] + " FROM ban_banners" + " WHERE Hidden='N'" + " ORDER BY RAND(%lu)" + " LIMIT %u", + (unsigned long) (Gbl.StartExecutionTimeUTC / + Cfg_TIME_TO_CHANGE_BANNER), + Cfg_NUMBER_OF_BANNERS); + } + +/*****************************************************************************/ +/********************* Get data of a banner from database ********************/ +/*****************************************************************************/ + +unsigned Ban_DB_GetDataOfBannerByCod (MYSQL_RES **mysql_res,long BanCod) + { + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get data of a banner", + "SELECT Hidden," // row[0] + "ShortName," // row[1] + "FullName," // row[2] + "Img," // row[3] + "WWW" // row[4] + " FROM ban_banners" + " WHERE BanCod=%ld", + BanCod); + } + +/*****************************************************************************/ +/********************* Check if the name of banner exists ********************/ +/*****************************************************************************/ + +bool Ban_DB_CheckIfBannerNameExists (const char *FieldName,const char *Name,long BanCod) + { + /***** Get number of banners with a name from database *****/ + return (DB_QueryCOUNT ("can not check if the name of a banner already existed", + "SELECT COUNT(*)" + " FROM ban_banners" + " WHERE %s='%s'" + " AND BanCod<>%ld", + FieldName,Name, + BanCod) != 0); + } + +/*****************************************************************************/ +/**************************** Create a new banner ****************************/ +/*****************************************************************************/ + +void Ban_DB_CreateBanner (const struct Ban_Banner *Ban) + { + /***** Create a new banner *****/ + DB_QueryINSERT ("can not create banner", + "INSERT INTO ban_banners" + " (Hidden,ShortName,FullName,Img,WWW)" + " VALUES" + " ('N','%s','%s','%s','%s')", + Ban->ShrtName, + Ban->FullName, + Ban->Img, + Ban->WWW); + } + +/*****************************************************************************/ +/************************* Change hiddeness of banner ************************/ +/*****************************************************************************/ + +void Ban_DB_ShowOrHideBanner (long BanCod,bool Hide) + { + DB_QueryUPDATE ("can not change status of a banner in database", + "UPDATE ban_banners" + " SET Hidden='%c'" + " WHERE BanCod=%ld", + Hide ? 'Y' : + 'N', + BanCod); + } + +/*****************************************************************************/ +/***************** Update banner name in table of banners ********************/ +/*****************************************************************************/ + +void Ban_DB_UpdateBanName (long BanCod,const char *FieldName, + const char *NewBanName) + { + DB_QueryUPDATE ("can not update the name of a banner", + "UPDATE ban_banners" + " SET %s='%s'" + " WHERE BanCod=%ld", + FieldName,NewBanName, + BanCod); + } + +/*****************************************************************************/ +/************** Update the table changing old image by new image *************/ +/*****************************************************************************/ + +void Ban_DB_UpdateBanImg (long BanCod, + const char NewImg[Ban_MAX_BYTES_IMAGE + 1]) + { + DB_QueryUPDATE ("can not update the image of a banner", + "UPDATE ban_banners" + " SET Img='%s'" + " WHERE BanCod=%ld", + NewImg, + BanCod); + } + +/*****************************************************************************/ +/*************** Update the table changing old WWW by new WWW ****************/ +/*****************************************************************************/ + +void Ban_DB_UpdateBanWWW (long BanCod, + const char NewWWW[Cns_MAX_BYTES_WWW + 1]) + { + DB_QueryUPDATE ("can not update the web of a banner", + "UPDATE ban_banners" + " SET WWW='%s'" + " WHERE BanCod=%ld", + NewWWW, + BanCod); + } + +/*****************************************************************************/ +/******************************* Remove a banner *****************************/ +/*****************************************************************************/ + +void Ban_DB_RemoveBanner (long BanCod) + { + DB_QueryDELETE ("can not remove a banner", + "DELETE FROM ban_banners" + " WHERE BanCod=%ld", + BanCod); + } diff --git a/swad_banner_database.h b/swad_banner_database.h new file mode 100644 index 00000000..0251565e --- /dev/null +++ b/swad_banner_database.h @@ -0,0 +1,59 @@ +// swad_banner_database.h: banners operations with database + +#ifndef _SWAD_BAN_DB +#define _SWAD_BAN_DB +/* + SWAD (Shared Workspace At a Distance), + is a web platform developed at the University of Granada (Spain), + and used to support university teaching. + + This file is part of SWAD core. + Copyright (C) 1999-2021 Antonio Caņas Vargas + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*****************************************************************************/ +/********************************* Headers ***********************************/ +/*****************************************************************************/ + +#include // To access MySQL databases + +#include "swad_banner.h" + +/*****************************************************************************/ +/************************** Public types and constants ***********************/ +/*****************************************************************************/ + +/*****************************************************************************/ +/***************************** Public prototypes *****************************/ +/*****************************************************************************/ + +unsigned Ban_DB_GetAllBanners (MYSQL_RES **mysql_res); +unsigned Ban_DB_GetVisibleBanners (MYSQL_RES **mysql_res); +unsigned Ban_DB_GetRandomBanners (MYSQL_RES **mysql_res); +unsigned Ban_DB_GetDataOfBannerByCod (MYSQL_RES **mysql_res,long BanCod); +bool Ban_DB_CheckIfBannerNameExists (const char *FieldName,const char *Name,long BanCod); + +void Ban_DB_CreateBanner (const struct Ban_Banner *Ban); +void Ban_DB_ShowOrHideBanner (long BanCod,bool Hide); +void Ban_DB_UpdateBanName (long BanCod,const char *FieldName, + const char *NewBanName); +void Ban_DB_UpdateBanImg (long BanCod, + const char NewImg[Ban_MAX_BYTES_IMAGE + 1]); +void Ban_DB_UpdateBanWWW (long BanCod, + const char NewWWW[Cns_MAX_BYTES_WWW + 1]); + +void Ban_DB_RemoveBanner (long BanCod); + +#endif