mirror of https://github.com/acanas/swad-core.git
Version 15.12
This commit is contained in:
parent
1cb24d5b19
commit
1b5cf06a11
|
@ -278,7 +278,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
|||
font-size:20px;
|
||||
font-weight:bold;
|
||||
line-height:normal;
|
||||
margin:4px auto 12px auto;
|
||||
margin:8px auto;
|
||||
padding:10px 20px;
|
||||
border-radius:4px;
|
||||
box-shadow:0 1px 0 rgba(255,255,255,0.15) inset;
|
||||
|
@ -387,7 +387,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
|||
/*********************************** Alerts **********************************/
|
||||
.ALERT
|
||||
{
|
||||
margin:2px auto 0 auto;
|
||||
margin:8px auto 0 auto;
|
||||
background-color:#FFF9E0;
|
||||
background-repeat:no-repeat;
|
||||
background-position:12px 12px;
|
||||
|
@ -405,7 +405,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
|||
.ICON16x16 {width:20px; height:20px; vertical-align:middle;}
|
||||
.ICON16x16B {width:20px; height:20px; vertical-align:middle; display:block;}
|
||||
.ICON20x20 {width:25px; height:25px; vertical-align:middle;}
|
||||
.ICON28x28 {width:35px; height:35px; vertical-align:middle;}
|
||||
.ICON28x28 {width:32px; height:32px; vertical-align:middle;}
|
||||
.ICON32x32 {width:40px; height:40px; vertical-align:middle;}
|
||||
.ICON32x32B {width:40px; height:40px; vertical-align:middle; display:block;}
|
||||
.ICON48x48 {width:60px; height:60px; vertical-align:middle;}
|
||||
|
@ -435,7 +435,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
|||
padding:12px;
|
||||
background-color:white;
|
||||
border-radius:4px;
|
||||
box-shadow:1px 1px 3px #CCC;
|
||||
box-shadow:1px 1px 2px #CCC;
|
||||
text-align:center;
|
||||
overflow:hidden;
|
||||
display:inline-block;
|
||||
|
@ -639,7 +639,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
}
|
||||
.ICON_HIGHLIGHT
|
||||
{
|
||||
opacity:0.7;
|
||||
opacity:0.67;
|
||||
}
|
||||
.ICON_HIGHLIGHT:hover
|
||||
{
|
||||
|
@ -652,13 +652,13 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.ICON_SCALING:hover
|
||||
{
|
||||
opacity:1;
|
||||
transform:scale(1.15,1.15);
|
||||
transform:scale(1.2,1.2);
|
||||
}
|
||||
.ICON_SCALED
|
||||
{
|
||||
display:inline-block;
|
||||
opacity:1;
|
||||
transform:scale(1.15,1.15);
|
||||
transform:scale(1.2,1.2);
|
||||
}
|
||||
|
||||
/*********************************** Tabs ************************************/
|
||||
|
@ -779,7 +779,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
#horizontal_menu_container li
|
||||
{
|
||||
display:table-cell;
|
||||
width:138px; height:75px;
|
||||
width:138px; height:64px;
|
||||
border:0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
|
@ -789,7 +789,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.MENU_OFF
|
||||
{
|
||||
display:inline-block;
|
||||
width:138px; height:75px;
|
||||
width:138px; height:64px;
|
||||
margin:0;
|
||||
padding:0 2px;
|
||||
text-align:center;
|
||||
|
@ -798,7 +798,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
.MENU_ON
|
||||
{
|
||||
display:inline-block;
|
||||
width:138px; height:75px;
|
||||
width:138px; height:64px;
|
||||
margin:0;
|
||||
padding:0;
|
||||
text-align:center;
|
||||
|
|
|
@ -230,7 +230,7 @@ form {margin:0; display:inline;}
|
|||
font-size:20px;
|
||||
font-weight:bold;
|
||||
line-height:normal;
|
||||
margin:4px auto 12px auto;
|
||||
margin:8px auto;
|
||||
padding:10px 20px;
|
||||
border-radius:4px;
|
||||
box-shadow:0 1px 0 rgba(255,255,255,0.15) inset;
|
||||
|
@ -354,7 +354,7 @@ form {margin:0; display:inline;}
|
|||
/********************************** Alerts ***********************************/
|
||||
.ALERT
|
||||
{
|
||||
margin:2px auto 0 auto;
|
||||
margin:8px auto 0 auto;
|
||||
background-color:#FFF9E0;
|
||||
background-repeat:no-repeat;
|
||||
background-position:12px 12px;
|
||||
|
@ -400,7 +400,7 @@ form {margin:0; display:inline;}
|
|||
padding:12px;
|
||||
background-color:white;
|
||||
border-radius:8px;
|
||||
box-shadow:1px 1px 3px #CCC;
|
||||
box-shadow:1px 1px 2px #CCC;
|
||||
text-align:center;
|
||||
overflow:hidden;
|
||||
display:inline-block;
|
||||
|
@ -593,7 +593,7 @@ a:hover img.CENTRE_PHOTO_SHOW
|
|||
}
|
||||
.ICON_HIGHLIGHT
|
||||
{
|
||||
opacity:0.7;
|
||||
opacity:0.67;
|
||||
}
|
||||
.ICON_HIGHLIGHT:hover
|
||||
{
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 124 B After Width: | Height: | Size: 129 B |
|
@ -10778,6 +10778,9 @@ INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1467','es','N','Camb
|
|||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1468','es','N','Cambiar contraseña estudiante');
|
||||
INSERT INTO actions (ActCod,Language,Obsolete,Txt) VALUES ('1469','es','N','Cambiar contraseña profesor');
|
||||
|
||||
----- SWAD 15.12 (2015/10/10) -----
|
||||
|
||||
ALTER TABLE log_recent ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod);
|
||||
|
||||
ALTER TABLE log ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod);
|
||||
|
||||
SELECT usr_nicknames.UsrCod FROM usr_nicknames,usr_data WHERE usr_nicknames.Nickname='JFERNAND' AND usr_nicknames.UsrCod=usr_data.UsrCod;
|
||||
|
|
12
sql/swad.sql
12
sql/swad.sql
|
@ -654,6 +654,9 @@ CREATE TABLE IF NOT EXISTS links (
|
|||
CREATE TABLE IF NOT EXISTS log (
|
||||
LogCod INT NOT NULL AUTO_INCREMENT,
|
||||
ActCod INT NOT NULL DEFAULT -1,
|
||||
CtyCod INT NOT NULL DEFAULT -1,
|
||||
InsCod INT NOT NULL DEFAULT -1,
|
||||
CtrCod INT NOT NULL DEFAULT -1,
|
||||
DegCod INT NOT NULL DEFAULT -1,
|
||||
CrsCod INT NOT NULL DEFAULT -1,
|
||||
UsrCod INT NOT NULL DEFAULT -1,
|
||||
|
@ -664,6 +667,9 @@ CREATE TABLE IF NOT EXISTS log (
|
|||
IP CHAR(15) NOT NULL,
|
||||
UNIQUE INDEX(LogCod),
|
||||
INDEX(ActCod),
|
||||
INDEX(CtyCod),
|
||||
INDEX(InsCod),
|
||||
INDEX(CtrCod),
|
||||
INDEX(DegCod),
|
||||
INDEX(CrsCod),
|
||||
INDEX(UsrCod),
|
||||
|
@ -688,6 +694,9 @@ CREATE TABLE IF NOT EXISTS log_comments (
|
|||
CREATE TABLE IF NOT EXISTS log_recent (
|
||||
LogCod INT NOT NULL,
|
||||
ActCod INT NOT NULL DEFAULT -1,
|
||||
CtyCod INT NOT NULL DEFAULT -1,
|
||||
InsCod INT NOT NULL DEFAULT -1,
|
||||
CtrCod INT NOT NULL DEFAULT -1,
|
||||
DegCod INT NOT NULL DEFAULT -1,
|
||||
CrsCod INT NOT NULL DEFAULT -1,
|
||||
UsrCod INT NOT NULL DEFAULT -1,
|
||||
|
@ -698,6 +707,9 @@ CREATE TABLE IF NOT EXISTS log_recent (
|
|||
IP CHAR(15) NOT NULL,
|
||||
UNIQUE INDEX(LogCod),
|
||||
INDEX(ActCod),
|
||||
INDEX(CtyCod),
|
||||
INDEX(InsCod),
|
||||
INDEX(CtrCod),
|
||||
INDEX(DegCod),
|
||||
INDEX(CrsCod),
|
||||
INDEX(UsrCod),
|
||||
|
|
|
@ -977,6 +977,35 @@ long Ctr_GetInsCodOfCentreByCod (long CtrCod)
|
|||
return InsCod;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get the short name of a centre from its code ****************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr)
|
||||
{
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
||||
Ctr->ShortName[0] = '\0';
|
||||
if (Ctr->CtrCod > 0)
|
||||
{
|
||||
/***** Get the short name of a centre from database *****/
|
||||
sprintf (Query,"SELECT ShortName FROM centres"
|
||||
" WHERE CtrCod ='%ld'",
|
||||
Ctr->CtrCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get the short name of a centre") == 1)
|
||||
{
|
||||
/***** Get the short name of this centre *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
strcpy (Ctr->ShortName,row[0]);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Get photo attribution from database *********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -93,6 +93,7 @@ void Ctr_EditCentres (void);
|
|||
void Ctr_GetListCentres (long InsCod);
|
||||
bool Ctr_GetDataOfCentreByCod (struct Centre *Ctr);
|
||||
long Ctr_GetInsCodOfCentreByCod (long CtrCod);
|
||||
void Ctr_GetShortNameOfCentreByCod (struct Centre *Ctr);
|
||||
void Ctr_FreeListCentres (void);
|
||||
void Ctr_WriteSelectorOfCentre (void);
|
||||
void Ctr_PutParamCtrCod (long CtrCod);
|
||||
|
|
|
@ -98,12 +98,20 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.11 (2015/10/08)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 15.12 (2015/10/10)"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
TODO: If photo zoom is out of the screen at left, put on right
|
||||
TODO: Change link to Degree in Statistics > Visits > By degree to internal Degree
|
||||
TODO: Link to user's country in public profile
|
||||
TODO: Show guests in connected users.
|
||||
|
||||
Version 15.12: Oct 10, 2015 Country, institution and centre are now stored in log. (185817 lines)
|
||||
2 slow changes necessary in database (may spend many minutes or even hours depending on the size of log tables):
|
||||
ALTER TABLE log_recent ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod);
|
||||
ALTER TABLE log ADD COLUMN CtyCod INT NOT NULL DEFAULT -1 AFTER ActCod,ADD INDEX (CtyCod),ADD COLUMN InsCod INT NOT NULL DEFAULT -1 AFTER CtyCod,ADD INDEX (InsCod),ADD COLUMN CtrCod INT NOT NULL DEFAULT -1 AFTER InsCod,ADD INDEX (CtrCod);
|
||||
|
||||
Version 15.11: Oct 08, 2015 Changes in layout of sent / received messages. (185680 lines)
|
||||
Version 15.10.5: Oct 07, 2015 Change in layout of removal of old users. (185669 lines)
|
||||
|
|
|
@ -173,6 +173,9 @@ void Con_GetAndShowLastClicks (void)
|
|||
extern const char *Txt_Click;
|
||||
extern const char *Txt_Hour;
|
||||
extern const char *Txt_Role;
|
||||
extern const char *Txt_Country;
|
||||
extern const char *Txt_Institution;
|
||||
extern const char *Txt_Centre;
|
||||
extern const char *Txt_Degree;
|
||||
extern const char *Txt_Action;
|
||||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
|
@ -183,13 +186,18 @@ void Con_GetAndShowLastClicks (void)
|
|||
unsigned NumRows;
|
||||
long ActCod;
|
||||
const char *ClassRow;
|
||||
struct Country Cty;
|
||||
struct Institution Ins;
|
||||
struct Centre Ctr;
|
||||
struct Degree Deg;
|
||||
|
||||
/***** Get last clicks from database *****/
|
||||
/* Important for maximum performance: do the LIMIT in the big log table before the JOIN */
|
||||
sprintf (Query,"SELECT last_logs.LogCod,last_logs.ActCod,last_logs.T,last_logs.Role,last_logs.DegCod,actions.Txt"
|
||||
/* Important for maximum performance:
|
||||
do the LIMIT in the big log table before the JOIN */
|
||||
sprintf (Query,"SELECT last_logs.LogCod,last_logs.ActCod,last_logs.T,last_logs.Role,"
|
||||
"last_logs.CtyCod,last_logs.InsCod,last_logs.CtrCod,last_logs.DegCod,actions.Txt"
|
||||
" FROM"
|
||||
" (SELECT LogCod,ActCod,DATE_FORMAT(ClickTime,'%%H:%%i:%%S') AS T,Role,DegCod"
|
||||
" (SELECT LogCod,ActCod,DATE_FORMAT(ClickTime,'%%H:%%i:%%S') AS T,Role,CtyCod,InsCod,CtrCod,DegCod"
|
||||
" FROM log_recent ORDER BY LogCod DESC LIMIT 20)"
|
||||
" AS last_logs,actions"
|
||||
" WHERE last_logs.ActCod=actions.ActCod AND actions.Language='es'");
|
||||
|
@ -200,28 +208,43 @@ void Con_GetAndShowLastClicks (void)
|
|||
"<tr>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:87px;\">"
|
||||
"%s"
|
||||
"%s" // Click
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:75px;\">"
|
||||
"%s"
|
||||
"%s" // Hour
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:125px;\">"
|
||||
"%s"
|
||||
"%s" // Role
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:187px;\">"
|
||||
"%s"
|
||||
"%s" // Country
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:187px;\">"
|
||||
"%s" // Institution
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:187px;\">"
|
||||
"%s" // Centre
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:187px;\">"
|
||||
"%s" // Degree
|
||||
"</th>"
|
||||
"<th class=\"LEFT_MIDDLE\""
|
||||
" style=\"width:275px;\">"
|
||||
"%s"
|
||||
"%s" // Action
|
||||
"</th>"
|
||||
"</tr>",
|
||||
Txt_Click,
|
||||
Txt_Hour,
|
||||
Txt_Role,
|
||||
Txt_Country,
|
||||
Txt_Institution,
|
||||
Txt_Centre,
|
||||
Txt_Degree,
|
||||
Txt_Action);
|
||||
|
||||
|
@ -241,34 +264,57 @@ void Con_GetAndShowLastClicks (void)
|
|||
(ActCod == Act_Actions[ActLogOut].ActCod ) ? "DAT_SMALL_RED LEFT_MIDDLE" :
|
||||
(ActCod == Act_Actions[ActWebSvc].ActCod ) ? "DAT_SMALL_BLUE LEFT_MIDDLE" :
|
||||
"DAT_SMALL_GREY LEFT_MIDDLE";
|
||||
|
||||
/* Get degree code (row[4]) */
|
||||
Deg.DegCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||
Cty.CtyCod = Str_ConvertStrCodToLongCod (row[4]);
|
||||
Cty_GetCountryName (Cty.CtyCod,Cty.Name[Gbl.Prefs.Language]);
|
||||
|
||||
/* Get degree code (row[5]) */
|
||||
Ins.InsCod = Str_ConvertStrCodToLongCod (row[5]);
|
||||
Ins_GetShortNameOfInstitutionByCod (&Ins);
|
||||
|
||||
/* Get degree code (row[6]) */
|
||||
Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[6]);
|
||||
Ctr_GetShortNameOfCentreByCod (&Ctr);
|
||||
|
||||
/* Get degree code (row[7]) */
|
||||
Deg.DegCod = Str_ConvertStrCodToLongCod (row[7]);
|
||||
Deg_GetShortNameOfDegreeByCod (&Deg);
|
||||
|
||||
/* Print table row */
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\">"
|
||||
"%s"
|
||||
"%s" // Click
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s"
|
||||
"%s" // Hour
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s"
|
||||
"%s" // Role
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s"
|
||||
"%s" // Country
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s"
|
||||
"%s" // Institution
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s" // Centre
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s" // Degree
|
||||
"</td>"
|
||||
"<td class=\"%s\">"
|
||||
"%s" // Action
|
||||
"</td>"
|
||||
"</tr>",
|
||||
ClassRow,row[0],
|
||||
ClassRow,row[2],
|
||||
ClassRow,Txt_ROLES_SINGUL_Abc[Rol_ConvertUnsignedStrToRole (row[3])][Usr_SEX_UNKNOWN],
|
||||
ClassRow,Cty.Name[Gbl.Prefs.Language],
|
||||
ClassRow,Ins.ShortName,
|
||||
ClassRow,Ctr.ShortName,
|
||||
ClassRow,Deg.ShortName,
|
||||
ClassRow,row[5]);
|
||||
ClassRow,row[8]);
|
||||
}
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
|
||||
|
|
|
@ -1347,6 +1347,9 @@ mysql> DESCRIBE log;
|
|||
+----------------+------------+------+-----+---------+----------------+
|
||||
| LogCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| ActCod | int(11) | NO | MUL | -1 | |
|
||||
| CtyCod | int(11) | NO | MUL | -1 | |
|
||||
| InsCod | int(11) | NO | MUL | -1 | |
|
||||
| CtrCod | int(11) | NO | MUL | -1 | |
|
||||
| DegCod | int(11) | NO | MUL | -1 | |
|
||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||
| UsrCod | int(11) | NO | MUL | -1 | |
|
||||
|
@ -1356,12 +1359,15 @@ mysql> DESCRIBE log;
|
|||
| TimeToSend | int(11) | NO | | NULL | |
|
||||
| IP | char(15) | NO | | NULL | |
|
||||
+----------------+------------+------+-----+---------+----------------+
|
||||
10 rows in set (0.00 sec)
|
||||
13 rows in set (0.01 sec)
|
||||
*/
|
||||
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log ("
|
||||
"LogCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"ActCod INT NOT NULL DEFAULT -1,"
|
||||
"CtyCod INT NOT NULL DEFAULT -1,"
|
||||
"InsCod INT NOT NULL DEFAULT -1,"
|
||||
"CtrCod INT NOT NULL DEFAULT -1,"
|
||||
"DegCod INT NOT NULL DEFAULT -1,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"UsrCod INT NOT NULL DEFAULT -1,"
|
||||
|
@ -1370,7 +1376,9 @@ mysql> DESCRIBE log;
|
|||
"TimeToGenerate INT NOT NULL,"
|
||||
"TimeToSend INT NOT NULL,"
|
||||
"IP CHAR(15) NOT NULL,"
|
||||
"UNIQUE INDEX(LogCod),INDEX(ActCod),INDEX(DegCod),INDEX(CrsCod),INDEX(UsrCod),INDEX(ClickTime,Role))");
|
||||
"UNIQUE INDEX(LogCod),INDEX(ActCod),"
|
||||
"INDEX(CtyCod),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod),"
|
||||
"INDEX(UsrCod),INDEX(ClickTime,Role))");
|
||||
|
||||
/***** Table log_banners *****/
|
||||
/*
|
||||
|
@ -1414,6 +1422,9 @@ mysql> DESCRIBE log_recent;
|
|||
+----------------+------------+------+-----+---------+-------+
|
||||
| LogCod | int(11) | NO | PRI | NULL | |
|
||||
| ActCod | int(11) | NO | MUL | -1 | |
|
||||
| CtyCod | int(11) | NO | MUL | -1 | |
|
||||
| InsCod | int(11) | NO | MUL | -1 | |
|
||||
| CtrCod | int(11) | NO | MUL | -1 | |
|
||||
| DegCod | int(11) | NO | MUL | -1 | |
|
||||
| CrsCod | int(11) | NO | MUL | -1 | |
|
||||
| UsrCod | int(11) | NO | MUL | -1 | |
|
||||
|
@ -1423,12 +1434,15 @@ mysql> DESCRIBE log_recent;
|
|||
| TimeToSend | int(11) | NO | | NULL | |
|
||||
| IP | char(15) | NO | | NULL | |
|
||||
+----------------+------------+------+-----+---------+-------+
|
||||
10 rows in set (0.01 sec)
|
||||
13 rows in set (0.01 sec)
|
||||
*/
|
||||
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_recent ("
|
||||
"LogCod INT NOT NULL,"
|
||||
"ActCod INT NOT NULL DEFAULT -1,"
|
||||
"CtyCod INT NOT NULL DEFAULT -1,"
|
||||
"InsCod INT NOT NULL DEFAULT -1,"
|
||||
"CtrCod INT NOT NULL DEFAULT -1,"
|
||||
"DegCod INT NOT NULL DEFAULT -1,"
|
||||
"CrsCod INT NOT NULL DEFAULT -1,"
|
||||
"UsrCod INT NOT NULL DEFAULT -1,"
|
||||
|
@ -1437,7 +1451,9 @@ mysql> DESCRIBE log_recent;
|
|||
"TimeToGenerate INT NOT NULL,"
|
||||
"TimeToSend INT NOT NULL,"
|
||||
"IP CHAR(15) NOT NULL,"
|
||||
"UNIQUE INDEX(LogCod),INDEX(ActCod),INDEX(DegCod),INDEX(CrsCod),INDEX(UsrCod),INDEX(ClickTime,Role))");
|
||||
"UNIQUE INDEX(LogCod),INDEX(ActCod),"
|
||||
"INDEX(CtyCod),INDEX(InsCod),INDEX(CtrCod),INDEX(DegCod),INDEX(CrsCod),"
|
||||
"INDEX(UsrCod),INDEX(ClickTime,Role))");
|
||||
|
||||
/***** Table log_ws *****/
|
||||
/*
|
||||
|
|
|
@ -968,6 +968,35 @@ bool Ins_GetDataOfInstitutionByCod (struct Institution *Ins,
|
|||
return InsFound;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********** Get the short name of an institution from its code **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Ins_GetShortNameOfInstitutionByCod (struct Institution *Ins)
|
||||
{
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
||||
Ins->ShortName[0] = '\0';
|
||||
if (Ins->InsCod > 0)
|
||||
{
|
||||
/***** Get the short name of an institution from database *****/
|
||||
sprintf (Query,"SELECT ShortName FROM institutions"
|
||||
" WHERE InsCod ='%ld'",
|
||||
Ins->InsCod);
|
||||
if (DB_QuerySELECT (Query,&mysql_res,"can not get the short name of an institution") == 1)
|
||||
{
|
||||
/***** Get the short name of this institution *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
strcpy (Ins->ShortName,row[0]);
|
||||
}
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Get number of users in an institution ********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -100,6 +100,7 @@ void Ins_EditInstitutions (void);
|
|||
void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData);
|
||||
bool Ins_GetDataOfInstitutionByCod (struct Institution *Ins,
|
||||
Ins_GetExtraData_t GetExtraData);
|
||||
void Ins_GetShortNameOfInstitutionByCod (struct Institution *Ins);
|
||||
void Ins_FreeListInstitutions (void);
|
||||
void Ins_WriteSelectorOfInstitution (void);
|
||||
void Ins_PutParamInsCod (long InsCod);
|
||||
|
|
|
@ -279,11 +279,14 @@ void Sta_LogAccess (const char *Comments)
|
|||
|
||||
/***** Insert access into database *****/
|
||||
/* Log access in historical log */
|
||||
sprintf (Query,"INSERT INTO log (ActCod,DegCod,CrsCod,UsrCod,"
|
||||
sprintf (Query,"INSERT INTO log (ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
|
||||
"Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
|
||||
" VALUES ('%ld','%ld','%ld','%ld',"
|
||||
" VALUES ('%ld','%ld','%ld','%ld','%ld','%ld','%ld',"
|
||||
"'%u',NOW(),'%ld','%ld','%s')",
|
||||
Act_Actions[Gbl.CurrentAct].ActCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
|
@ -301,11 +304,14 @@ void Sta_LogAccess (const char *Comments)
|
|||
LogCod = DB_QueryINSERTandReturnCode (Query,"can not log access (historical)");
|
||||
|
||||
/* Log access in recent log */
|
||||
sprintf (Query,"INSERT INTO log_recent (LogCod,ActCod,DegCod,CrsCod,UsrCod,"
|
||||
sprintf (Query,"INSERT INTO log_recent (LogCod,ActCod,CtyCod,InsCod,CtrCod,DegCod,CrsCod,UsrCod,"
|
||||
"Role,ClickTime,TimeToGenerate,TimeToSend,IP)"
|
||||
" VALUES ('%ld','%ld','%ld','%ld','%ld',"
|
||||
" VALUES ('%ld','%ld','%ld','%ld','%ld','%ld','%ld','%ld',"
|
||||
"'%u',NOW(),'%ld','%ld','%s')",
|
||||
LogCod,Act_Actions[Gbl.CurrentAct].ActCod,
|
||||
Gbl.CurrentCty.Cty.CtyCod,
|
||||
Gbl.CurrentIns.Ins.InsCod,
|
||||
Gbl.CurrentCtr.Ctr.CtrCod,
|
||||
Gbl.CurrentDeg.Deg.DegCod,
|
||||
Gbl.CurrentCrs.Crs.CrsCod,
|
||||
Gbl.Usrs.Me.UsrDat.UsrCod,
|
||||
|
|
Loading…
Reference in New Issue