Version 15.12

This commit is contained in:
Antonio Cañas Vargas 2015-10-10 22:16:46 +02:00
parent 1cb24d5b19
commit 1b5cf06a11
13 changed files with 191 additions and 40 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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),

View File

@ -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 *********************/
/*****************************************************************************/

View File

@ -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);

View File

@ -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)

View File

@ -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>");

View File

@ -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 *****/
/*

View File

@ -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 ********************/
/*****************************************************************************/

View File

@ -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);

View File

@ -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,