Version 15.68

This commit is contained in:
Antonio Cañas Vargas 2015-12-19 18:25:44 +01:00
parent 3a7a4d17b5
commit f4ac8cd22a
2 changed files with 152 additions and 137 deletions

View File

@ -94,7 +94,6 @@
----------Otros ----------Otros
....Etc..... ....Etc.....
*/ */
// TODO: Show guests in connected users.
// TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks) // TODO: A teacher should may confirm a student ID? In what conditions? (Necessary in order to a student can view his/her marks)
// TODO: Put headers Content-type and Content-disposition when redirecting with Location: // TODO: Put headers Content-type and Content-disposition when redirecting with Location:
// TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty // TODO: When a new assignment/attendance/survey is incorrect, the second time the form is shown, it should be filled with partial data, now is always empty
@ -120,12 +119,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.67.1 (2015/12/15)" #define Log_PLATFORM_VERSION "SWAD 15.68 (2015/12/19)"
#define CSS_FILE "swad15.65.1.css" #define CSS_FILE "swad15.65.1.css"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 15.68: Dec 19, 2015 Show guests in connected users.
Optimization in queries about connected users. (187158 lines)
Version 15.67.1: Dec 15, 2015 Changed some messages. (187141 lines) Version 15.67.1: Dec 15, 2015 Changed some messages. (187141 lines)
Version 15.67: Dec 15, 2015 Fixed bugs in queries of enrollment requests. (187140 lines) Version 15.67: Dec 15, 2015 Fixed bugs in queries of enrollment requests. (187140 lines)
Version 15.66.3: Dec 15, 2015 Changes in some small icons. Version 15.66.3: Dec 15, 2015 Changes in some small icons.

View File

@ -95,11 +95,10 @@ void Con_ShowConnectedUsrs (void)
Gbl.Now.Date.Day, Gbl.Now.Date.Day,
Gbl.Now.Time.Hour, Gbl.Now.Time.Hour,
Gbl.Now.Time.Minute); Gbl.Now.Time.Minute);
Lay_StartRoundFrameTable (NULL,0,Gbl.Title); Lay_StartRoundFrame (NULL,Gbl.Title);
/***** Put form to update connected users *****/ /***** Put form to update connected users *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<div class=\"CENTER_MIDDLE\""
"<td class=\"CENTER_MIDDLE\""
" style=\"padding-bottom:12px;\">"); " style=\"padding-bottom:12px;\">");
Act_FormStart (ActLstCon); Act_FormStart (ActLstCon);
Gbl.Scope.Current = Sco_SCOPE_CRS; Gbl.Scope.Current = Sco_SCOPE_CRS;
@ -114,11 +113,7 @@ void Con_ShowConnectedUsrs (void)
Sco_PutSelectorScope (true); Sco_PutSelectorScope (true);
} }
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</div>");
fprintf (Gbl.F.Out,"</td>"
"</tr>"
"<tr>"
"<td class=\"CENTER_MIDDLE\">");
/* Number of connected users in the whole platform */ /* Number of connected users in the whole platform */
Con_ShowGlobalConnectedUsrs (); Con_ShowGlobalConnectedUsrs ();
@ -126,11 +121,8 @@ void Con_ShowConnectedUsrs (void)
/* Show connected users in the current course */ /* Show connected users in the current course */
Con_ShowConnectedUsrsBelongingToScope (); Con_ShowConnectedUsrsBelongingToScope ();
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/***** End frame *****/ /***** End frame *****/
Lay_EndRoundFrameTable (); Lay_EndRoundFrame ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -510,6 +502,8 @@ void Con_ShowConnectedUsrsBelongingToScope (void)
case Con_SHOW_ON_MAIN_ZONE: case Con_SHOW_ON_MAIN_ZONE:
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_TEACHER); Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_TEACHER);
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_STUDENT); Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol_STUDENT);
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnMainZone (Rol__GUEST_);
break; break;
case Con_SHOW_ON_RIGHT_COLUMN: case Con_SHOW_ON_RIGHT_COLUMN:
Gbl.Usrs.Connected.NumUsr = 0; Gbl.Usrs.Connected.NumUsr = 0;
@ -517,6 +511,8 @@ void Con_ShowConnectedUsrsBelongingToScope (void)
Gbl.Usrs.Connected.NumUsrsToList = 0; Gbl.Usrs.Connected.NumUsrsToList = 0;
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_TEACHER); Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_TEACHER);
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_STUDENT); Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol_STUDENT);
if (Gbl.Usrs.Me.LoggedRole == Rol_SYS_ADM)
Con_ShowConnectedUsrsWithARoleBelongingToCurrentLocationOnRightColumn (Rol__GUEST_);
break; break;
} }
@ -1119,21 +1115,32 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
Gbl.Scope.Current == Sco_SCOPE_CRS); Gbl.Scope.Current == Sco_SCOPE_CRS);
/***** Get connected users who belong to current location from database *****/ /***** Get connected users who belong to current location from database *****/
switch (Role)
{
case Rol__GUEST_:
sprintf (Query,"SELECT UsrCod,LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(LastTime) AS Dif"
" FROM connected"
" WHERE UsrCod NOT IN (SELECT UsrCod FROM crs_usr)"
" ORDER BY Dif");
break;
case Rol_STUDENT:
case Rol_TEACHER:
switch (Gbl.Scope.Current) switch (Gbl.Scope.Current)
{ {
case Sco_SCOPE_SYS: // Show connected users in the whole platform case Sco_SCOPE_SYS: // Show connected users in the whole platform
sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM connected,crs_usr,usr_data" " FROM connected,crs_usr"
" WHERE connected.UsrCod=crs_usr.UsrCod" " WHERE connected.UsrCod=crs_usr.UsrCod"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND connected.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
(unsigned) Role); (unsigned) Role);
break; break;
case Sco_SCOPE_CTY: // Show connected users in the current country case Sco_SCOPE_CTY: // Show connected users in the current country
sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM institutions,centres,degrees,courses,crs_usr,connected,usr_data" " FROM institutions,centres,degrees,courses,crs_usr,connected"
" WHERE institutions.CtyCod='%ld'" " WHERE institutions.CtyCod='%ld'"
" AND institutions.InsCod=centres.InsCod" " AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=degrees.CtrCod" " AND centres.CtrCod=degrees.CtrCod"
@ -1141,57 +1148,57 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
" AND courses.CrsCod=crs_usr.CrsCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND crs_usr.UsrCod=connected.UsrCod" " AND crs_usr.UsrCod=connected.UsrCod"
" AND crs_usr.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
Gbl.CurrentCty.Cty.CtyCod, Gbl.CurrentCty.Cty.CtyCod,
(unsigned) Role); (unsigned) Role);
break; break;
case Sco_SCOPE_INS: // Show connected users in the current institution case Sco_SCOPE_INS: // Show connected users in the current institution
sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM centres,degrees,courses,crs_usr,connected,usr_data" " FROM centres,degrees,courses,crs_usr,connected"
" WHERE centres.InsCod='%ld'" " WHERE centres.InsCod='%ld'"
" AND centres.CtrCod=degrees.CtrCod" " AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegCod=courses.DegCod" " AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND crs_usr.UsrCod=connected.UsrCod" " AND crs_usr.UsrCod=connected.UsrCod"
" AND crs_usr.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
Gbl.CurrentIns.Ins.InsCod, Gbl.CurrentIns.Ins.InsCod,
(unsigned) Role); (unsigned) Role);
break; break;
case Sco_SCOPE_CTR: // Show connected users in the current centre case Sco_SCOPE_CTR: // Show connected users in the current centre
sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM degrees,courses,crs_usr,connected,usr_data" " FROM degrees,courses,crs_usr,connected"
" WHERE degrees.CtrCod='%ld'" " WHERE degrees.CtrCod='%ld'"
" AND degrees.DegCod=courses.DegCod" " AND degrees.DegCod=courses.DegCod"
" AND courses.CrsCod=crs_usr.CrsCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND crs_usr.UsrCod=connected.UsrCod" " AND crs_usr.UsrCod=connected.UsrCod"
" AND crs_usr.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
Gbl.CurrentCtr.Ctr.CtrCod, Gbl.CurrentCtr.Ctr.CtrCod,
(unsigned) Role); (unsigned) Role);
break; break;
case Sco_SCOPE_DEG: // Show connected users in the current degree case Sco_SCOPE_DEG: // Show connected users in the current degree
sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT DISTINCTROW connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM courses,crs_usr,connected,usr_data" " FROM courses,crs_usr,connected"
" WHERE courses.DegCod='%ld'" " WHERE courses.DegCod='%ld'"
" AND courses.CrsCod=crs_usr.CrsCod" " AND courses.CrsCod=crs_usr.CrsCod"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND crs_usr.UsrCod=connected.UsrCod" " AND crs_usr.UsrCod=connected.UsrCod"
" AND crs_usr.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
Gbl.CurrentDeg.Deg.DegCod, Gbl.CurrentDeg.Deg.DegCod,
(unsigned) Role); (unsigned) Role);
break; break;
case Sco_SCOPE_CRS: // Show connected users in the current course case Sco_SCOPE_CRS: // Show connected users in the current course
sprintf (Query,"SELECT connected.UsrCod,connected.LastCrsCod," sprintf (Query,"SELECT connected.UsrCod,connected.LastCrsCod,"
"UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif" "UNIX_TIMESTAMP()-UNIX_TIMESTAMP(connected.LastTime) AS Dif"
" FROM crs_usr,connected,usr_data" " FROM crs_usr,connected"
" WHERE crs_usr.CrsCod='%ld'" " WHERE crs_usr.CrsCod='%ld'"
" AND crs_usr.Role='%u'" " AND crs_usr.Role='%u'"
" AND crs_usr.UsrCod=connected.UsrCod" " AND crs_usr.UsrCod=connected.UsrCod"
" AND crs_usr.UsrCod=usr_data.UsrCod ORDER BY Dif", " ORDER BY Dif",
Gbl.CurrentCrs.Crs.CrsCod, Gbl.CurrentCrs.Crs.CrsCod,
(unsigned) Role); (unsigned) Role);
break; break;
@ -1199,6 +1206,12 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
Lay_ShowErrorAndExit ("Wrong scope."); Lay_ShowErrorAndExit ("Wrong scope.");
break; break;
} }
break;
default:
Lay_ShowErrorAndExit ("Wrong role.");
break;
}
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get list of connected users who belong to this location"); NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get list of connected users who belong to this location");
if (NumUsrs) if (NumUsrs)
@ -1215,8 +1228,8 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
/* Get user's data */ /* Get user's data */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]); UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
Usr_GetAllUsrDataFromUsrCod (&UsrDat); if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // Existing user
{
/* Get course code (row[1]) */ /* Get course code (row[1]) */
ThisCrs = (Str_ConvertStrCodToLongCod (row[1]) == Gbl.CurrentCrs.Crs.CrsCod); ThisCrs = (Str_ConvertStrCodToLongCod (row[1]) == Gbl.CurrentCrs.Crs.CrsCod);
Font = (ThisCrs ? "CON_CRS" : Font = (ThisCrs ? "CON_CRS" :
@ -1266,6 +1279,7 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd; Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
} }
}
/***** Free memory used for user's data *****/ /***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);