diff --git a/Makefile b/Makefile
index 12eaeeb6..8f0fea47 100644
--- a/Makefile
+++ b/Makefile
@@ -41,7 +41,7 @@ OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
swad_game.o swad_global.o swad_group.o \
swad_help.o swad_hierarchy.o swad_holiday.o swad_HTML.o \
swad_icon.o swad_ID.o swad_indicator.o swad_info.o swad_institution.o \
- swad_language.o swad_layout.o swad_link.o swad_logo.o \
+ swad_language.o swad_layout.o swad_link.o swad_log.o swad_logo.o \
swad_mail.o swad_main.o swad_mark.o swad_match.o swad_match_result.o \
swad_media.o swad_menu.o swad_message.o swad_MFU.o \
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
diff --git a/swad_action.c b/swad_action.c
index 5cb97c08..7b78b7fc 100644
--- a/swad_action.c
+++ b/swad_action.c
@@ -53,6 +53,7 @@
#include "swad_ID.h"
#include "swad_indicator.h"
#include "swad_language.h"
+#include "swad_log.h"
#include "swad_mail.h"
#include "swad_mark.h"
#include "swad_match.h"
@@ -3138,7 +3139,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeeAccCrs ] = { 119,-1,TabUnk,ActReqAccGbl ,0x230,0x200, 0, 0, 0, 0, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Sta_SeeCrsAccesses ,NULL},
[ActSeeAllStaCrs ] = { 768,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,Ind_ShowIndicatorsCourses ,NULL},
- [ActLstClk ] = { 989,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Sta_ShowLastClicks ,NULL},
+ [ActLstClk ] = { 989,-1,TabUnk,ActReqAccGbl ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Log_ShowLastClicks ,NULL},
[ActRefLstClk ] = { 994,-1,TabUnk,ActRefLstClk ,0x3F8,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,0x3C7,Act_CONT_NORM,Act_AJAX_RFRESH,NULL ,Lay_RefreshLastClicks ,NULL},
[ActSeeMyUsgRep ] = {1582,-1,TabUnk,ActReqMyUsgRep ,0x3F8,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,0x3C6,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Rep_ShowMyUsageReport ,NULL},
diff --git a/swad_centre.c b/swad_centre.c
index dc122fc0..a3e6fd86 100644
--- a/swad_centre.c
+++ b/swad_centre.c
@@ -252,7 +252,7 @@ void Ctr_DrawCentreLogoAndNameWithLink (struct Centre *Ctr,Act_Action_t Action,
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,ClassLink,NULL);
/***** Centre logo and name *****/
- Log_DrawLogo (Hie_CTR,Ctr->CtrCod,Ctr->ShrtName,16,ClassLogo,true);
+ Lgo_DrawLogo (Hie_CTR,Ctr->CtrCod,Ctr->ShrtName,16,ClassLogo,true);
HTM_TxtF (" %s",Ctr->FullName);
/***** End link *****/
@@ -343,7 +343,7 @@ static void Ctr_Configuration (bool PrintView)
" class=\"FRAME_TITLE_BIG\" title=\"%s\"",
Gbl.Hierarchy.Ctr.WWW,
Gbl.Hierarchy.Ctr.FullName);
- Log_DrawLogo (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,
+ Lgo_DrawLogo (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.ShrtName,64,NULL,true);
HTM_BR ();
HTM_Txt (Gbl.Hierarchy.Ctr.FullName);
@@ -697,7 +697,7 @@ static void Ctr_PutIconsCtrConfig (void)
// have permission to upload logo and photo of the centre
{
/***** Put icon to upload logo of centre *****/
- Log_PutIconToChangeLogo (Hie_CTR);
+ Lgo_PutIconToChangeLogo (Hie_CTR);
/***** Put icon to upload photo of centre *****/
Ctr_PutIconToChangePhoto ();
@@ -1500,7 +1500,7 @@ static void Ctr_ListCentresForEdition (void)
/* Centre logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr->FullName);
- Log_DrawLogo (Hie_CTR,Ctr->CtrCod,Ctr->ShrtName,20,NULL,true);
+ Lgo_DrawLogo (Hie_CTR,Ctr->CtrCod,Ctr->ShrtName,20,NULL,true);
HTM_TD_End ();
/* Place */
@@ -2244,7 +2244,7 @@ static void Ctr_PutParamGoToCtr (void)
void Ctr_RequestLogo (void)
{
- Log_RequestLogo (Hie_CTR);
+ Lgo_RequestLogo (Hie_CTR);
}
/*****************************************************************************/
@@ -2253,7 +2253,7 @@ void Ctr_RequestLogo (void)
void Ctr_ReceiveLogo (void)
{
- Log_ReceiveLogo (Hie_CTR);
+ Lgo_ReceiveLogo (Hie_CTR);
}
/*****************************************************************************/
@@ -2262,7 +2262,7 @@ void Ctr_ReceiveLogo (void)
void Ctr_RemoveLogo (void)
{
- Log_RemoveLogo (Hie_CTR);
+ Lgo_RemoveLogo (Hie_CTR);
}
/*****************************************************************************/
@@ -2488,7 +2488,7 @@ static void Ctr_PutFormToCreateCentre (void)
/***** Centre logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ctr_EditingCtr->FullName);
- Log_DrawLogo (Hie_CTR,-1L,"",20,NULL,true);
+ Lgo_DrawLogo (Hie_CTR,-1L,"",20,NULL,true);
HTM_TD_End ();
/***** Place *****/
diff --git a/swad_changelog.h b/swad_changelog.h
index 24d22e96..a4e18c20 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -490,13 +490,14 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.91.2 (2019-12-14)"
+#define Log_PLATFORM_VERSION "SWAD 19.92 (2019-12-14)"
#define CSS_FILE "swad19.90.1.css"
#define JS_FILE "swad19.91.1.js"
/*
// TODO: Hacer un nuevo rol en los TFG: tutor externo (profesor de áreas no vinculadas con el centro, profesionales de empresas, etc.)
// TODO: Impedir la creación y edición de proyectos si no son editables.
+ Version 19.92: Dec 14, 2019 New module for log database tables. (248625 lines)
Version 19.91.2: Dec 14, 2019 Code refactoring related to doubles. (248538 lines)
Version 19.91.1: Dec 14, 2019 Changes in match layout. (248533 lines)
Version 19.91: Dec 13, 2019 Changes in match countdown.
diff --git a/swad_chat.c b/swad_chat.c
index 17a18ed2..edca6cf8 100644
--- a/swad_chat.c
+++ b/swad_chat.c
@@ -190,7 +190,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
"%s %s",
Txt_Degree,Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
- Log_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
/* Get my courses in this degree from database */
diff --git a/swad_connected.c b/swad_connected.c
index 9c7a4496..f2ba7146 100644
--- a/swad_connected.c
+++ b/swad_connected.c
@@ -37,6 +37,7 @@
#include "swad_global.h"
#include "swad_hierarchy.h"
#include "swad_HTML.h"
+#include "swad_log.h"
#include "swad_parameter.h"
#include "swad_photo.h"
#include "swad_role.h"
@@ -87,7 +88,7 @@ void Con_ShowConnectedUsrs (void)
if (Gbl.Usrs.Me.Logged)
{
Mnu_ContextMenuBegin ();
- Sta_PutLinkToLastClicks (); // Show last clicks in real time
+ Log_PutLinkToLastClicks (); // Show last clicks in real time
Mnu_ContextMenuEnd ();
}
diff --git a/swad_course.c b/swad_course.c
index ec9236c5..b2ed3aa1 100644
--- a/swad_course.c
+++ b/swad_course.c
@@ -223,7 +223,7 @@ static void Crs_Configuration (bool PrintView)
" class=\"FRAME_TITLE_BIG\" title=\"%s\"",
Gbl.Hierarchy.Deg.WWW,
Gbl.Hierarchy.Deg.FullName);
- Log_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
+ Lgo_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,64,NULL,true);
if (PutLink)
HTM_A_End ();
@@ -638,7 +638,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
- Log_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,16,NULL,true);
+ Lgo_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,16,NULL,true);
HTM_TxtF (" %s",Ins.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -672,7 +672,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
- Log_DrawLogo (Hie_CTR,Ctr.CtrCod,Ctr.ShrtName,16,NULL,true);
+ Lgo_DrawLogo (Hie_CTR,Ctr.CtrCod,Ctr.ShrtName,16,NULL,true);
HTM_TxtF (" %s",Ctr.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -706,7 +706,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Highlight ? ClassHighlight :
ClassNormal,
NULL);
- Log_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,16,NULL,true);
HTM_TxtF (" %s",Deg.ShrtName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -3183,7 +3183,7 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
Txt_Go_to_X,
row[2]);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,ClassLink,NULL);
- Log_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
+ Lgo_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
HTM_TxtF (" %s (%s)",row[2],row[6]);
HTM_BUTTON_End ();
Frm_EndForm ();
diff --git a/swad_degree.c b/swad_degree.c
index 593b4537..9b1f9c52 100644
--- a/swad_degree.c
+++ b/swad_degree.c
@@ -256,7 +256,7 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Degree *Deg,Act_Action_t Action,
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,ClassLink,NULL);
/***** Degree logo and name *****/
- Log_DrawLogo (Hie_DEG,Deg->DegCod,Deg->ShrtName,16,ClassLogo,true);
+ Lgo_DrawLogo (Hie_DEG,Deg->DegCod,Deg->ShrtName,16,ClassLogo,true);
HTM_TxtF (" %s",Deg->FullName);
/***** End link *****/
@@ -327,7 +327,7 @@ static void Deg_Configuration (bool PrintView)
" class=\"FRAME_TITLE_BIG\" title=\"%s\"",
Gbl.Hierarchy.Deg.WWW,
Gbl.Hierarchy.Deg.FullName);
- Log_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
+ Lgo_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,64,NULL,true);
HTM_BR ();
HTM_Txt (Gbl.Hierarchy.Deg.FullName);
@@ -549,7 +549,7 @@ static void Deg_PutIconsToPrintAndUpload (void)
// Only degree admins, centre admins, institution admins and system admins
// have permission to upload logo of the degree
/***** Link to upload logo of degree *****/
- Log_PutIconToChangeLogo (Hie_DEG);
+ Lgo_PutIconToChangeLogo (Hie_DEG);
}
/*****************************************************************************/
@@ -725,7 +725,7 @@ static void Deg_ListDegreesForEdition (void)
/* Degree logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg->FullName);
- Log_DrawLogo (Hie_DEG,Deg->DegCod,Deg->ShrtName,20,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,Deg->DegCod,Deg->ShrtName,20,NULL,true);
HTM_TD_End ();
/* Degree short name */
@@ -943,7 +943,7 @@ static void Deg_PutFormToCreateDegree (void)
/***** Degree logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Deg_EditingDeg->FullName);
- Log_DrawLogo (Hie_DEG,-1L,"",20,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,-1L,"",20,NULL,true);
HTM_TD_End ();
/***** Degree short name *****/
@@ -2286,7 +2286,7 @@ static void Deg_PutParamGoToDeg (void)
void Deg_RequestLogo (void)
{
- Log_RequestLogo (Hie_DEG);
+ Lgo_RequestLogo (Hie_DEG);
}
/*****************************************************************************/
@@ -2295,7 +2295,7 @@ void Deg_RequestLogo (void)
void Deg_ReceiveLogo (void)
{
- Log_ReceiveLogo (Hie_DEG);
+ Lgo_ReceiveLogo (Hie_DEG);
}
/*****************************************************************************/
@@ -2304,7 +2304,7 @@ void Deg_ReceiveLogo (void)
void Deg_RemoveLogo (void)
{
- Log_RemoveLogo (Hie_DEG);
+ Lgo_RemoveLogo (Hie_DEG);
}
/*****************************************************************************/
diff --git a/swad_exam.c b/swad_exam.c
index a873d5e0..c69cf912 100644
--- a/swad_exam.c
+++ b/swad_exam.c
@@ -1047,7 +1047,7 @@ static void Exa_ShowExamAnnouncement (long ExaCod,
else
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"%s\"",
Ins.WWW,StyleTitle);
- Log_DrawLogo (Hie_INS,Ins.InsCod,Ins.FullName,64,NULL,true);
+ Lgo_DrawLogo (Hie_INS,Ins.InsCod,Ins.FullName,64,NULL,true);
HTM_BR ();
HTM_Txt (Ins.FullName);
if (TypeViewExamAnnouncement == Exa_PRINT_VIEW)
diff --git a/swad_figure.c b/swad_figure.c
index b6f20d1d..8b889fd9 100644
--- a/swad_figure.c
+++ b/swad_figure.c
@@ -1476,7 +1476,7 @@ static void Fig_ShowInss (MYSQL_RES **mysql_res,unsigned NumInss,
HTM_BUTTON_SUBMIT_Begin (Ins.ShrtName,The_ClassFormLinkInBox[Gbl.Prefs.Theme],NULL);
if (Gbl.Usrs.Listing.WithPhotos)
{
- Log_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,
+ Lgo_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,
40,NULL,true);
HTM_NBSP ();
}
diff --git a/swad_file_browser.c b/swad_file_browser.c
index b3d7643b..5a56f2c5 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -11959,7 +11959,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
Txt_Go_to_X,
InsShortName);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK LT DAT",NULL);
- Log_DrawLogo (Hie_INS,InsCod,InsShortName,20,"BT_LINK LT",true);
+ Lgo_DrawLogo (Hie_INS,InsCod,InsShortName,20,"BT_LINK LT",true);
HTM_TxtF (" %s",InsShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -11976,7 +11976,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
Txt_Go_to_X,
CtrShortName);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK LT DAT",NULL);
- Log_DrawLogo (Hie_CTR,CtrCod,CtrShortName,20,"LT",true);
+ Lgo_DrawLogo (Hie_CTR,CtrCod,CtrShortName,20,"LT",true);
HTM_TxtF (" %s",CtrShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
@@ -11993,7 +11993,7 @@ static void Brw_WriteRowDocData (unsigned long *NumDocsNotHidden,MYSQL_ROW row)
Txt_Go_to_X,
DegShortName);
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK LT DAT",NULL);
- Log_DrawLogo (Hie_DEG,DegCod,DegShortName,20,"LT",true);
+ Lgo_DrawLogo (Hie_DEG,DegCod,DegShortName,20,"LT",true);
HTM_TxtF (" %s",DegShortName);
HTM_BUTTON_End ();
Frm_EndForm ();
diff --git a/swad_forum.c b/swad_forum.c
index 5edc6dda..bdde894d 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -2084,15 +2084,15 @@ static void For_WriteLinkToForum (struct Forum *Forum,
break;
case For_FORUM_INSTIT_USRS:
case For_FORUM_INSTIT_TCHS:
- Log_DrawLogo (Hie_INS,Forum->Location,ForumName,16,NULL,true);
+ Lgo_DrawLogo (Hie_INS,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_CENTRE_USRS:
case For_FORUM_CENTRE_TCHS:
- Log_DrawLogo (Hie_CTR,Forum->Location,ForumName,16,NULL,true);
+ Lgo_DrawLogo (Hie_CTR,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_DEGREE_USRS:
case For_FORUM_DEGREE_TCHS:
- Log_DrawLogo (Hie_DEG,Forum->Location,ForumName,16,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,Forum->Location,ForumName,16,NULL,true);
break;
case For_FORUM_COURSE_USRS:
case For_FORUM_COURSE_TCHS:
diff --git a/swad_hierarchy.c b/swad_hierarchy.c
index c555f1bc..967af21c 100644
--- a/swad_hierarchy.c
+++ b/swad_hierarchy.c
@@ -439,16 +439,16 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void)
Cty_DrawCountryMap (&Gbl.Hierarchy.Cty,"COUNTRY_MAP_TITLE");
break;
case Hie_INS: // Institution
- Log_DrawLogo (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
+ Lgo_DrawLogo (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.ShrtName,40,"TOP_LOGO",false);
break;
case Hie_CTR: // Centre
- Log_DrawLogo (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,
+ Lgo_DrawLogo (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Gbl.Hierarchy.Ctr.ShrtName,40,"TOP_LOGO",false);
break;
case Hie_DEG: // Degree
case Hie_CRS: // Course
- Log_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
+ Lgo_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,40,"TOP_LOGO",false);
break;
default:
diff --git a/swad_institution.c b/swad_institution.c
index 9ef88911..f121d80e 100644
--- a/swad_institution.c
+++ b/swad_institution.c
@@ -237,7 +237,7 @@ void Ins_DrawInstitutionLogoWithLink (struct Instit *Ins,unsigned Size)
Ins_PutParamInsCod (Ins->InsCod);
HTM_BUTTON_SUBMIT_Begin (Ins->FullName,"BT_LINK",NULL);
}
- Log_DrawLogo (Hie_INS,Ins->InsCod,Ins->FullName,
+ Lgo_DrawLogo (Hie_INS,Ins->InsCod,Ins->FullName,
Size,NULL,true);
if (PutLink)
{
@@ -266,7 +266,7 @@ void Ins_DrawInstitutionLogoAndNameWithLink (struct Instit *Ins,Act_Action_t Act
HTM_BUTTON_SUBMIT_Begin (Gbl.Title,ClassLink,NULL);
/***** Institution logo and name *****/
- Log_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,16,ClassLogo,true);
+ Lgo_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,16,ClassLogo,true);
HTM_TxtF (" %s",Ins->FullName);
/***** End link *****/
@@ -340,7 +340,7 @@ static void Ins_Configuration (bool PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"FRAME_TITLE_BIG\" title=\"%s\"",
Gbl.Hierarchy.Ins.WWW,
Gbl.Hierarchy.Ins.FullName);
- Log_DrawLogo (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
+ Lgo_DrawLogo (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
Gbl.Hierarchy.Ins.ShrtName,64,NULL,true);
HTM_BR ();
HTM_Txt (Gbl.Hierarchy.Ins.FullName);
@@ -613,7 +613,7 @@ static void Ins_PutIconsToPrintAndUpload (void)
if (Gbl.Usrs.Me.Role.Logged >= Rol_INS_ADM)
/***** Icon to upload logo of institution *****/
- Log_PutIconToChangeLogo (Hie_INS);
+ Lgo_PutIconToChangeLogo (Hie_INS);
/***** Put icon to view places *****/
Plc_PutIconToViewPlaces ();
@@ -1475,7 +1475,7 @@ static void Ins_ListInstitutionsForEdition (void)
/* Institution logo */
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins->FullName);
- Log_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,20,NULL,true);
+ Lgo_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,20,NULL,true);
HTM_TD_End ();
/* Institution short name */
@@ -2141,7 +2141,7 @@ static void Ins_PutParamGoToIns (void)
void Ins_RequestLogo (void)
{
- Log_RequestLogo (Hie_INS);
+ Lgo_RequestLogo (Hie_INS);
}
/*****************************************************************************/
@@ -2150,7 +2150,7 @@ void Ins_RequestLogo (void)
void Ins_ReceiveLogo (void)
{
- Log_ReceiveLogo (Hie_INS);
+ Lgo_ReceiveLogo (Hie_INS);
}
/*****************************************************************************/
@@ -2159,7 +2159,7 @@ void Ins_ReceiveLogo (void)
void Ins_RemoveLogo (void)
{
- Log_RemoveLogo (Hie_INS);
+ Lgo_RemoveLogo (Hie_INS);
}
/*****************************************************************************/
@@ -2198,7 +2198,7 @@ static void Ins_PutFormToCreateInstitution (void)
/***** Institution logo *****/
HTM_TD_Begin ("title=\"%s\" class=\"HIE_LOGO\"",Ins_EditingIns->FullName);
- Log_DrawLogo (Hie_INS,-1L,"",20,NULL,true);
+ Lgo_DrawLogo (Hie_INS,-1L,"",20,NULL,true);
HTM_TD_End ();
/***** Institution short name *****/
diff --git a/swad_layout.c b/swad_layout.c
index 9d68a1e8..fb8519c4 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -46,6 +46,7 @@
#include "swad_hierarchy.h"
#include "swad_HTML.h"
#include "swad_language.h"
+#include "swad_log.h"
#include "swad_logo.h"
#include "swad_MFU.h"
#include "swad_notice.h"
@@ -1337,7 +1338,7 @@ void Lay_ShowErrorAndExit (const char *Txt)
{
/***** Log access *****/
Gbl.TimeSendInMicroseconds = 0L;
- Sta_LogAccess (Txt);
+ Log_LogAccess (Txt);
}
else
{
@@ -1354,7 +1355,7 @@ void Lay_ShowErrorAndExit (const char *Txt)
Sta_ComputeTimeToSendPage ();
/***** Log access *****/
- Sta_LogAccess (Txt);
+ Log_LogAccess (Txt);
/***** Update last data for next time *****/
if (Gbl.Usrs.Me.Logged)
@@ -1463,7 +1464,7 @@ void Lay_RefreshNotifsAndConnected (void)
else if (!(Gbl.PID % 103))
Set_RemoveOldSettingsFromIP (); // Remove old settings from IP
else if (!(Gbl.PID % 107))
- Sta_RemoveOldEntriesRecentLog (); // Remove old entries in recent log table, it's a slow query
+ Log_RemoveOldEntriesRecentLog (); // Remove old entries in recent log table, it's a slow query
else if (!(Gbl.PID % 109))
Fil_RemoveOldTmpFiles (Cfg_PATH_OUT_PRIVATE ,Cfg_TIME_TO_DELETE_HTML_OUTPUT ,false);
else if (!(Gbl.PID % 113))
@@ -1514,7 +1515,7 @@ void Lay_RefreshLastClicks (void)
HTM_TxtF ("%lu|",Cfg_TIME_TO_REFRESH_LAST_CLICKS);
/***** Get and show last clicks *****/
- Sta_GetAndShowLastClicks ();
+ Log_GetAndShowLastClicks ();
}
}
@@ -1572,7 +1573,7 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
{
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\"",Ins.WWW);
- Log_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,40,NULL,true);
+ Lgo_DrawLogo (Hie_INS,Ins.InsCod,Ins.ShrtName,40,NULL,true);
if (!PrintView)
HTM_A_End ();
}
@@ -1619,7 +1620,7 @@ void Lay_WriteHeaderClassPhoto (bool PrintView,bool DrawingClassPhoto,
if (!PrintView)
HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"CLASSPHOTO_TITLE\"",
Deg.WWW);
- Log_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,40,NULL,true);
+ Lgo_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,40,NULL,true);
if (!PrintView)
HTM_A_End ();
}
diff --git a/swad_log.c b/swad_log.c
new file mode 100644
index 00000000..f254634c
--- /dev/null
+++ b/swad_log.c
@@ -0,0 +1,357 @@
+// swad_log.c: access log stored in 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-2019 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 3 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 "swad_action.h"
+#include "swad_config.h"
+#include "swad_database.h"
+#include "swad_global.h"
+#include "swad_HTML.h"
+#include "swad_log.h"
+#include "swad_profile.h"
+#include "swad_role.h"
+#include "swad_statistic.h"
+
+/*****************************************************************************/
+/****************************** Public constants *****************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/***************************** Private constants *****************************/
+/*****************************************************************************/
+
+#define Log_SECONDS_IN_RECENT_LOG ((time_t) (Cfg_DAYS_IN_RECENT_LOG * 24UL * 60UL * 60UL)) // Remove entries in recent log oldest than this time
+
+/*****************************************************************************/
+/****************************** Private types ********************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/************** External global variables from others modules ****************/
+/*****************************************************************************/
+
+extern struct Globals Gbl;
+
+/*****************************************************************************/
+/************************* Private global variables **************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/***************************** Private prototypes ****************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/**************************** Log access in database *************************/
+/*****************************************************************************/
+
+void Log_LogAccess (const char *Comments)
+ {
+ long LogCod;
+ long ActCod = Act_GetActCod (Gbl.Action.Act);
+ Rol_Role_t RoleToStore = (Gbl.Action.Act == ActLogOut) ? Gbl.Usrs.Me.Role.LoggedBeforeCloseSession :
+ Gbl.Usrs.Me.Role.Logged;
+
+ /***** Insert access into database *****/
+ /* Log access in historical log (log_full) */
+ LogCod =
+ DB_QueryINSERTandReturnCode ("can not log access (full)",
+ "INSERT INTO log_full "
+ "(ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
+ "Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
+ " VALUES "
+ "(%ld,%ld,%ld,%ld,%ld,%ld,%ld,"
+ "%u,NOW(),%ld,%ld,'%s')",
+ ActCod,
+ Gbl.Hierarchy.Cty.CtyCod,
+ Gbl.Hierarchy.Ins.InsCod,
+ Gbl.Hierarchy.Ctr.CtrCod,
+ Gbl.Hierarchy.Deg.DegCod,
+ Gbl.Hierarchy.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) RoleToStore,
+ Gbl.TimeGenerationInMicroseconds,
+ Gbl.TimeSendInMicroseconds,
+ Gbl.IP);
+
+ /* Log access in recent log (log_recent) */
+ DB_QueryINSERT ("can not log access (recent)",
+ "INSERT INTO log_recent "
+ "(LogCod,ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
+ "Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
+ " VALUES "
+ "(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,"
+ "%u,NOW(),%ld,%ld,'%s')",
+ LogCod,ActCod,
+ Gbl.Hierarchy.Cty.CtyCod,
+ Gbl.Hierarchy.Ins.InsCod,
+ Gbl.Hierarchy.Ctr.CtrCod,
+ Gbl.Hierarchy.Deg.DegCod,
+ Gbl.Hierarchy.Crs.CrsCod,
+ Gbl.Usrs.Me.UsrDat.UsrCod,
+ (unsigned) RoleToStore,
+ Gbl.TimeGenerationInMicroseconds,
+ Gbl.TimeSendInMicroseconds,
+ Gbl.IP);
+
+ /* Log comments */
+ if (Comments)
+ DB_QueryINSERT ("can not log access (comments)",
+ "INSERT INTO log_comments"
+ " (LogCod,Comments)"
+ " VALUES"
+ " (%ld,'%s')",
+ LogCod,Comments);
+
+ /* Log search string */
+ if (Gbl.Search.LogSearch && Gbl.Search.Str[0])
+ DB_QueryINSERT ("can not log access (search)",
+ "INSERT INTO log_search"
+ " (LogCod,SearchStr)"
+ " VALUES"
+ " (%ld,'%s')",
+ LogCod,Gbl.Search.Str);
+
+ if (Gbl.WebService.IsWebService)
+ /* Log web service plugin and function */
+ DB_QueryINSERT ("can not log access (comments)",
+ "INSERT INTO log_ws"
+ " (LogCod,PlgCod,FunCod)"
+ " VALUES"
+ " (%ld,%ld,%u)",
+ LogCod,Gbl.WebService.PlgCod,
+ (unsigned) Gbl.WebService.Function);
+ else if (Gbl.Banners.BanCodClicked > 0)
+ /* Log banner clicked */
+ DB_QueryINSERT ("can not log banner clicked",
+ "INSERT INTO log_banners"
+ " (LogCod,BanCod)"
+ " VALUES"
+ " (%ld,%ld)",
+ LogCod,Gbl.Banners.BanCodClicked);
+
+ /***** Increment my number of clicks *****/
+ if (Gbl.Usrs.Me.Logged)
+ Prf_IncrementNumClicksUsr (Gbl.Usrs.Me.UsrDat.UsrCod);
+ }
+
+/*****************************************************************************/
+/************ Sometimes, we delete old entries in recent log table ***********/
+/*****************************************************************************/
+
+void Log_RemoveOldEntriesRecentLog (void)
+ {
+ /***** Remove all expired clipboards *****/
+ DB_QueryDELETE ("can not remove old entries from recent log",
+ "DELETE LOW_PRIORITY FROM log_recent"
+ " WHERE ClickTime.
+*/
+/*****************************************************************************/
+/********************************* Headers ***********************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/***************************** Public constants ******************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/******************************* Public types ********************************/
+/*****************************************************************************/
+
+/*****************************************************************************/
+/***************************** Public prototypes *****************************/
+/*****************************************************************************/
+
+void Log_LogAccess (const char *Comments);
+void Log_RemoveOldEntriesRecentLog (void);
+
+void Log_PutLinkToLastClicks (void);
+void Log_ShowLastClicks (void);
+void Log_GetAndShowLastClicks (void);
+
+#endif
diff --git a/swad_logo.c b/swad_logo.c
index 4cc60906..656fa53e 100644
--- a/swad_logo.c
+++ b/swad_logo.c
@@ -68,7 +68,7 @@ extern struct Globals Gbl;
/****************************** Draw degree logo *****************************/
/*****************************************************************************/
-void Log_DrawLogo (Hie_Level_t Scope,long Cod,const char *AltText,
+void Lgo_DrawLogo (Hie_Level_t Scope,long Cod,const char *AltText,
unsigned Size,const char *Class,bool PutIconIfNotExists)
{
static const char *HieIcon[Hie_NUM_LEVELS] =
@@ -195,7 +195,7 @@ void Log_DrawLogo (Hie_Level_t Scope,long Cod,const char *AltText,
/************* the logo of institution, centre or degree ***************/
/*****************************************************************************/
-void Log_PutIconToChangeLogo (Hie_Level_t Scope)
+void Lgo_PutIconToChangeLogo (Hie_Level_t Scope)
{
extern const char *Txt_Change_logo;
extern const char *Txt_Upload_logo;
@@ -247,7 +247,7 @@ void Log_PutIconToChangeLogo (Hie_Level_t Scope)
/**** Show a form for sending a logo of the institution, centre or degree ****/
/*****************************************************************************/
-void Log_RequestLogo (Hie_Level_t Scope)
+void Lgo_RequestLogo (Hie_Level_t Scope)
{
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Remove_logo;
@@ -330,7 +330,7 @@ void Log_RequestLogo (Hie_Level_t Scope)
/******* Receive the logo of the current institution, centre or degree *******/
/*****************************************************************************/
-void Log_ReceiveLogo (Hie_Level_t Scope)
+void Lgo_ReceiveLogo (Hie_Level_t Scope)
{
extern const char *Txt_The_file_is_not_X;
long Cod;
@@ -416,7 +416,7 @@ void Log_ReceiveLogo (Hie_Level_t Scope)
/******* Remove the logo of the current institution, centre or degree ********/
/*****************************************************************************/
-void Log_RemoveLogo (Hie_Level_t Scope)
+void Lgo_RemoveLogo (Hie_Level_t Scope)
{
long Cod;
const char *Folder;
diff --git a/swad_logo.h b/swad_logo.h
index b47d918a..79405398 100644
--- a/swad_logo.h
+++ b/swad_logo.h
@@ -1,7 +1,7 @@
// swad_logo.h: logo of institution, centre or degree
-#ifndef _SWAD_LOG
-#define _SWAD_LOG
+#ifndef _SWAD_LGO
+#define _SWAD_LGO
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
@@ -39,11 +39,11 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
-void Log_DrawLogo (Hie_Level_t Scope,long Cod,const char *AltText,
+void Lgo_DrawLogo (Hie_Level_t Scope,long Cod,const char *AltText,
unsigned Size,const char *Class,bool PutIconIfNotExists);
-void Log_PutIconToChangeLogo (Hie_Level_t Scope);
-void Log_RequestLogo (Hie_Level_t Scope);
-void Log_ReceiveLogo (Hie_Level_t Scope);
-void Log_RemoveLogo (Hie_Level_t Scope);
+void Lgo_PutIconToChangeLogo (Hie_Level_t Scope);
+void Lgo_RequestLogo (Hie_Level_t Scope);
+void Lgo_ReceiveLogo (Hie_Level_t Scope);
+void Lgo_RemoveLogo (Hie_Level_t Scope);
#endif
diff --git a/swad_photo.c b/swad_photo.c
index ea51d7fb..eeaf09b5 100644
--- a/swad_photo.c
+++ b/swad_photo.c
@@ -2266,7 +2266,7 @@ static void Pho_ShowOrPrintListDegrees (Pho_AvgPhotoSeeOrPrint_t SeeOrPrint)
"BT_LINK DAT","CT");
else // Pho_DEGREES_PRINT
{
- Log_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
+ Lgo_DrawLogo (Hie_DEG,Deg.DegCod,Deg.ShrtName,20,"CT",true);
HTM_TxtF (" %s",Deg.FullName);
}
HTM_TD_End ();
diff --git a/swad_record.c b/swad_record.c
index f319d31d..786b321e 100644
--- a/swad_record.c
+++ b/swad_record.c
@@ -1750,7 +1750,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
HTM_TR_Begin (NULL);
HTM_TD_Begin ("class=\"LM\" style=\"width:%upx;\"",Rec_DEGREE_LOGO_SIZE);
- Log_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
+ Lgo_DrawLogo (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
Gbl.Hierarchy.Deg.ShrtName,Rec_DEGREE_LOGO_SIZE,NULL,true);
HTM_TD_End ();
@@ -2699,7 +2699,7 @@ static void Rec_ShowInstitutionInHead (struct Instit *Ins,bool PutFormLinks)
Ins_PutParamInsCod (Ins->InsCod);
HTM_BUTTON_SUBMIT_Begin (Ins->FullName,"BT_LINK",NULL);
}
- Log_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,
+ Lgo_DrawLogo (Hie_INS,Ins->InsCod,Ins->ShrtName,
Rec_INSTITUTION_LOGO_SIZE,NULL,true);
if (PutFormLinks)
{
diff --git a/swad_statistic.c b/swad_statistic.c
index 12cf4b32..cd7ac8be 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -37,6 +37,7 @@
#include "swad_global.h"
#include "swad_HTML.h"
#include "swad_ID.h"
+#include "swad_log.h"
#include "swad_profile.h"
#include "swad_role.h"
#include "swad_statistic.h"
@@ -51,8 +52,6 @@ extern struct Globals Gbl;
/***************************** Private constants *****************************/
/*****************************************************************************/
-#define Sta_SECONDS_IN_RECENT_LOG ((time_t) (Cfg_DAYS_IN_RECENT_LOG * 24UL * 60UL * 60UL)) // Remove entries in recent log oldest than this time
-
static const unsigned Sta_CellPadding[Sta_NUM_CLICKS_GROUPED_BY] =
{
[Sta_CLICKS_CRS_DETAILED_LIST ] = 2,
@@ -101,9 +100,6 @@ typedef enum
/***************************** Private prototypes ****************************/
/*****************************************************************************/
-static void Sta_PutLinkToCourseHits (void);
-static void Sta_PutLinkToGlobalHits (void);
-
static void Sta_WriteSelectorCountType (void);
static void Sta_WriteSelectorAction (void);
static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse);
@@ -174,113 +170,6 @@ void Sta_GetRemoteAddr (void)
Gbl.IP[0] = '\0';
}
-/*****************************************************************************/
-/**************************** Log access in database *************************/
-/*****************************************************************************/
-
-void Sta_LogAccess (const char *Comments)
- {
- long LogCod;
- long ActCod = Act_GetActCod (Gbl.Action.Act);
- Rol_Role_t RoleToStore = (Gbl.Action.Act == ActLogOut) ? Gbl.Usrs.Me.Role.LoggedBeforeCloseSession :
- Gbl.Usrs.Me.Role.Logged;
-
- /***** Insert access into database *****/
- /* Log access in historical log (log_full) */
- LogCod =
- DB_QueryINSERTandReturnCode ("can not log access (full)",
- "INSERT INTO log_full "
- "(ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
- "Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
- " VALUES "
- "(%ld,%ld,%ld,%ld,%ld,%ld,%ld,"
- "%u,NOW(),%ld,%ld,'%s')",
- ActCod,
- Gbl.Hierarchy.Cty.CtyCod,
- Gbl.Hierarchy.Ins.InsCod,
- Gbl.Hierarchy.Ctr.CtrCod,
- Gbl.Hierarchy.Deg.DegCod,
- Gbl.Hierarchy.Crs.CrsCod,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) RoleToStore,
- Gbl.TimeGenerationInMicroseconds,
- Gbl.TimeSendInMicroseconds,
- Gbl.IP);
-
- /* Log access in recent log (log_recent) */
- DB_QueryINSERT ("can not log access (recent)",
- "INSERT INTO log_recent "
- "(LogCod,ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
- "Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
- " VALUES "
- "(%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,"
- "%u,NOW(),%ld,%ld,'%s')",
- LogCod,ActCod,
- Gbl.Hierarchy.Cty.CtyCod,
- Gbl.Hierarchy.Ins.InsCod,
- Gbl.Hierarchy.Ctr.CtrCod,
- Gbl.Hierarchy.Deg.DegCod,
- Gbl.Hierarchy.Crs.CrsCod,
- Gbl.Usrs.Me.UsrDat.UsrCod,
- (unsigned) RoleToStore,
- Gbl.TimeGenerationInMicroseconds,
- Gbl.TimeSendInMicroseconds,
- Gbl.IP);
-
- /* Log comments */
- if (Comments)
- DB_QueryINSERT ("can not log access (comments)",
- "INSERT INTO log_comments"
- " (LogCod,Comments)"
- " VALUES"
- " (%ld,'%s')",
- LogCod,Comments);
-
- /* Log search string */
- if (Gbl.Search.LogSearch && Gbl.Search.Str[0])
- DB_QueryINSERT ("can not log access (search)",
- "INSERT INTO log_search"
- " (LogCod,SearchStr)"
- " VALUES"
- " (%ld,'%s')",
- LogCod,Gbl.Search.Str);
-
- if (Gbl.WebService.IsWebService)
- /* Log web service plugin and function */
- DB_QueryINSERT ("can not log access (comments)",
- "INSERT INTO log_ws"
- " (LogCod,PlgCod,FunCod)"
- " VALUES"
- " (%ld,%ld,%u)",
- LogCod,Gbl.WebService.PlgCod,
- (unsigned) Gbl.WebService.Function);
- else if (Gbl.Banners.BanCodClicked > 0)
- /* Log banner clicked */
- DB_QueryINSERT ("can not log banner clicked",
- "INSERT INTO log_banners"
- " (LogCod,BanCod)"
- " VALUES"
- " (%ld,%ld)",
- LogCod,Gbl.Banners.BanCodClicked);
-
- /***** Increment my number of clicks *****/
- if (Gbl.Usrs.Me.Logged)
- Prf_IncrementNumClicksUsr (Gbl.Usrs.Me.UsrDat.UsrCod);
- }
-
-/*****************************************************************************/
-/************ Sometimes, we delete old entries in recent log table ***********/
-/*****************************************************************************/
-
-void Sta_RemoveOldEntriesRecentLog (void)
- {
- /***** Remove all expired clipboards *****/
- DB_QueryDELETE ("can not remove old entries from recent log",
- "DELETE LOW_PRIORITY FROM log_recent"
- " WHERE ClickTime