mirror of https://github.com/acanas/swad-core.git
Version 15.228.1
This commit is contained in:
parent
1571274661
commit
5287dff949
|
@ -129,13 +129,14 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 15.228 (2016-06-23)"
|
#define Log_PLATFORM_VERSION "SWAD 15.228.1 (2016-06-23)"
|
||||||
#define CSS_FILE "swad15.226.css"
|
#define CSS_FILE "swad15.226.css"
|
||||||
#define JS_FILE "swad15.226.js"
|
#define JS_FILE "swad15.226.js"
|
||||||
|
|
||||||
// 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.228.1 Jun 23, 2015 Code refactoring in lists of users. (202794 lines)
|
||||||
Version 15.228 Jun 23, 2015 Code refactoring in lists of users. (202814 lines)
|
Version 15.228 Jun 23, 2015 Code refactoring in lists of users. (202814 lines)
|
||||||
Version 15.227.1 Jun 23, 2015 Code refactoring in getting/searching users. (202854 lines)
|
Version 15.227.1 Jun 23, 2015 Code refactoring in getting/searching users. (202854 lines)
|
||||||
Version 15.227: Jun 21, 2015 Query optimization in search of users. (202820 lines)
|
Version 15.227: Jun 21, 2015 Query optimization in search of users. (202820 lines)
|
||||||
|
|
|
@ -81,6 +81,7 @@ void Gbl_InitializeGlobals (void)
|
||||||
extern const char *The_ThemeId[The_NUM_THEMES];
|
extern const char *The_ThemeId[The_NUM_THEMES];
|
||||||
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
|
||||||
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
extern const unsigned Txt_Current_CGI_SWAD_Language;
|
||||||
|
Rol_Role_t Role;
|
||||||
Txt_Language_t Lan;
|
Txt_Language_t Lan;
|
||||||
|
|
||||||
Gbl.Layout.WritingHTMLStart =
|
Gbl.Layout.WritingHTMLStart =
|
||||||
|
@ -183,17 +184,13 @@ void Gbl_InitializeGlobals (void)
|
||||||
Gbl.Action.UsesAJAX = false;
|
Gbl.Action.UsesAJAX = false;
|
||||||
Gbl.Action.Tab = TabUnk;
|
Gbl.Action.Tab = TabUnk;
|
||||||
|
|
||||||
Gbl.Usrs.LstUsrs[Rol__GUEST_].Lst = NULL;
|
for (Role = (Rol_Role_t) 0;
|
||||||
Gbl.Usrs.LstUsrs[Rol__GUEST_].NumUsrs = 0;
|
Role < Rol_NUM_ROLES;
|
||||||
|
Role++)
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].Lst = NULL;
|
{
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs = 0;
|
Gbl.Usrs.LstUsrs[Role].Lst = NULL;
|
||||||
|
Gbl.Usrs.LstUsrs[Role].NumUsrs = 0;
|
||||||
Gbl.Usrs.LstUsrs[Rol_TEACHER].Lst = NULL;
|
}
|
||||||
Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs = 0;
|
|
||||||
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_DEG_ADM].Lst = NULL; // Used to list of administrators of any scope, not only degree administrators
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_DEG_ADM].NumUsrs = 0;
|
|
||||||
|
|
||||||
Gbl.ExamAnnouncements.NumExaAnns = 0;
|
Gbl.ExamAnnouncements.NumExaAnns = 0;
|
||||||
Gbl.ExamAnnouncements.Lst = NULL;
|
Gbl.ExamAnnouncements.Lst = NULL;
|
||||||
|
|
|
@ -232,7 +232,10 @@ void Msg_ListEMails (void)
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"DAT CENTER_MIDDLE\">");
|
"<td class=\"DAT CENTER_MIDDLE\">");
|
||||||
fprintf (Gbl.F.Out,Txt_X_students_who_have_accepted_and_who_have_e_mail,
|
fprintf (Gbl.F.Out,Txt_X_students_who_have_accepted_and_who_have_e_mail,
|
||||||
NumAcceptedStdsWithEmail,((float) NumAcceptedStdsWithEmail / (float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
NumAcceptedStdsWithEmail,
|
||||||
|
((float) NumAcceptedStdsWithEmail /
|
||||||
|
(float) Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs) * 100.0,
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs);
|
||||||
fprintf (Gbl.F.Out,"</td>"
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
"</tr>");
|
"</tr>");
|
||||||
|
|
||||||
|
@ -285,6 +288,7 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
extern const char *Txt_MSG_To;
|
extern const char *Txt_MSG_To;
|
||||||
extern const char *Txt_Send_message;
|
extern const char *Txt_Send_message;
|
||||||
char YN[1+1];
|
char YN[1+1];
|
||||||
|
unsigned NumTotalUsrs = 0;
|
||||||
|
|
||||||
Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs =
|
Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs =
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs = 0;
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs = 0;
|
||||||
|
@ -330,15 +334,15 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ||
|
if (NumTotalUsrs)
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
/***** Get lists of selected users *****/
|
/***** Get lists of selected users *****/
|
||||||
Usr_GetListsSelectedUsrs ();
|
Usr_GetListsSelectedUsrs ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
if (Usr_GetIfShowBigList (NumTotalUsrs))
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs))
|
|
||||||
{
|
{
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,
|
Lay_StartRoundFrame (NULL,
|
||||||
|
@ -347,8 +351,7 @@ static void Msg_PutFormMsgUsrs (const char *Content)
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
/***** Form to select type of list used for select several users *****/
|
/***** Form to select type of list used for select several users *****/
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ||
|
if (NumTotalUsrs)
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr);
|
Usr_ShowFormsToSelectUsrListType (ActReqMsgUsr);
|
||||||
|
|
||||||
/***** Form to show several potential recipients *****/
|
/***** Form to show several potential recipients *****/
|
||||||
|
|
|
@ -405,6 +405,7 @@ void Sta_AskShowCrsHits (void)
|
||||||
extern const char *Txt_No_teachers_or_students_found;
|
extern const char *Txt_No_teachers_or_students_found;
|
||||||
static unsigned long RowsPerPage[] = {10,20,30,40,50,100,500,1000,5000,10000,50000,100000};
|
static unsigned long RowsPerPage[] = {10,20,30,40,50,100,500,1000,5000,10000,50000,100000};
|
||||||
#define NUM_OPTIONS_ROWS_PER_PAGE (sizeof (RowsPerPage) / sizeof (RowsPerPage[0]))
|
#define NUM_OPTIONS_ROWS_PER_PAGE (sizeof (RowsPerPage) / sizeof (RowsPerPage[0]))
|
||||||
|
unsigned NumTotalUsrs;
|
||||||
Sta_ClicksGroupedBy_t ClicksGroupedBy;
|
Sta_ClicksGroupedBy_t ClicksGroupedBy;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
|
|
||||||
|
@ -419,12 +420,12 @@ void Sta_AskShowCrsHits (void)
|
||||||
/***** Get and order the lists of users of this course *****/
|
/***** Get and order the lists of users of this course *****/
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ||
|
if (NumTotalUsrs)
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
if (Usr_GetIfShowBigList (NumTotalUsrs))
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs))
|
|
||||||
{
|
{
|
||||||
/***** Get lists of selected users *****/
|
/***** Get lists of selected users *****/
|
||||||
Usr_GetListsSelectedUsrs ();
|
Usr_GetListsSelectedUsrs ();
|
||||||
|
|
|
@ -6811,6 +6811,7 @@ void Tst_SelUsrsToSeeUsrsExams (void)
|
||||||
extern const char *Txt_Exams;
|
extern const char *Txt_Exams;
|
||||||
extern const char *Txt_Users;
|
extern const char *Txt_Users;
|
||||||
extern const char *Txt_See_exams;
|
extern const char *Txt_See_exams;
|
||||||
|
unsigned NumTotalUsrs;
|
||||||
|
|
||||||
/***** Get and update type of list,
|
/***** Get and update type of list,
|
||||||
number of columns in class photo
|
number of columns in class photo
|
||||||
|
@ -6823,12 +6824,12 @@ void Tst_SelUsrsToSeeUsrsExams (void)
|
||||||
/***** Get and order lists of users from this course *****/
|
/***** Get and order lists of users from this course *****/
|
||||||
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_TEACHER,Sco_SCOPE_CRS);
|
||||||
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
Usr_GetListUsrs (Rol_STUDENT,Sco_SCOPE_CRS);
|
||||||
|
NumTotalUsrs = Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
||||||
|
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs;
|
||||||
|
|
||||||
if (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ||
|
if (NumTotalUsrs)
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
{
|
{
|
||||||
if (Usr_GetIfShowBigList (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs +
|
if (Usr_GetIfShowBigList (NumTotalUsrs))
|
||||||
Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs))
|
|
||||||
{
|
{
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,Txt_Exams,NULL);
|
Lay_StartRoundFrame (NULL,Txt_Exams,NULL);
|
||||||
|
|
87
swad_user.c
87
swad_user.c
|
@ -3820,6 +3820,11 @@ void Usr_SearchListUsrs (Rol_Role_t Role,const char *UsrQuery)
|
||||||
"UsrCod",
|
"UsrCod",
|
||||||
UsrQuery);
|
UsrQuery);
|
||||||
else // Students / Teachers
|
else // Students / Teachers
|
||||||
|
/*
|
||||||
|
To achieve maximum speed, it's important to do the things in this order:
|
||||||
|
1) Search for user's name (UsrQuery) getting candidate users
|
||||||
|
2) Filter the candidate users according to scope
|
||||||
|
*/
|
||||||
switch (Gbl.Scope.Current)
|
switch (Gbl.Scope.Current)
|
||||||
{
|
{
|
||||||
case Sco_SCOPE_SYS:
|
case Sco_SCOPE_SYS:
|
||||||
|
@ -4824,19 +4829,8 @@ void Usr_PutExtraParamsUsrList (Act_Action_t NextAction)
|
||||||
void Usr_ListUsersToSelect (Rol_Role_t Role)
|
void Usr_ListUsersToSelect (Rol_Role_t Role)
|
||||||
{
|
{
|
||||||
/***** If there are no users, don't list anything *****/
|
/***** If there are no users, don't list anything *****/
|
||||||
switch (Role)
|
if (!Gbl.Usrs.LstUsrs[Role].NumUsrs)
|
||||||
{
|
return;
|
||||||
case Rol_STUDENT:
|
|
||||||
if (!Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs)
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Rol_TEACHER:
|
|
||||||
if (!Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs)
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***** Put a row to select all users *****/
|
/***** Put a row to select all users *****/
|
||||||
Usr_PutCheckboxToSelectAllTheUsers (Role);
|
Usr_PutCheckboxToSelectAllTheUsers (Role);
|
||||||
|
@ -5539,38 +5533,17 @@ void Usr_ListUsrsForSelection (Rol_Role_t Role)
|
||||||
Usr_UsrDataConstructor (&UsrDat);
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
|
|
||||||
/***** List users' data *****/
|
/***** List users' data *****/
|
||||||
switch (Role)
|
for (NumUsr = 0, Gbl.RowEvenOdd = 0;
|
||||||
|
NumUsr < Gbl.Usrs.LstUsrs[Role].NumUsrs; )
|
||||||
{
|
{
|
||||||
case Rol_STUDENT:
|
UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].UsrCod;
|
||||||
for (NumUsr = 0, Gbl.RowEvenOdd = 0;
|
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist...
|
||||||
NumUsr < Gbl.Usrs.LstUsrs[Rol_STUDENT].NumUsrs; )
|
{
|
||||||
{
|
UsrDat.Accepted = Gbl.Usrs.LstUsrs[Role].Lst[NumUsr].Accepted;
|
||||||
UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Rol_STUDENT].Lst[NumUsr].UsrCod;
|
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist...
|
|
||||||
{
|
|
||||||
UsrDat.Accepted = Gbl.Usrs.LstUsrs[Rol_STUDENT].Lst[NumUsr].Accepted;
|
|
||||||
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
|
|
||||||
|
|
||||||
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Rol_TEACHER:
|
|
||||||
for (NumUsr = 0, Gbl.RowEvenOdd = 0;
|
|
||||||
NumUsr < Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs; )
|
|
||||||
{
|
|
||||||
UsrDat.UsrCod = Gbl.Usrs.LstUsrs[Rol_TEACHER].Lst[NumUsr].UsrCod;
|
|
||||||
if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&UsrDat)) // If user's data exist...
|
|
||||||
{
|
|
||||||
UsrDat.Accepted = Gbl.Usrs.LstUsrs[Rol_TEACHER].Lst[NumUsr].Accepted;
|
|
||||||
Usr_WriteRowUsrMainData (++NumUsr,&UsrDat,true);
|
|
||||||
|
|
||||||
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free memory used for user's data *****/
|
/***** Free memory used for user's data *****/
|
||||||
|
@ -6353,7 +6326,7 @@ void Usr_SeeGuests (void)
|
||||||
Lay_WriteHeaderClassPhoto (false,true,
|
Lay_WriteHeaderClassPhoto (false,true,
|
||||||
(Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
(Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
||||||
-1L,
|
-1L,
|
||||||
-1L,
|
-1L,
|
||||||
-1L);
|
-1L);
|
||||||
|
|
||||||
|
@ -6509,12 +6482,12 @@ void Usr_SeeStudents (void)
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
||||||
-1L,
|
-1L,
|
||||||
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
||||||
-1L,
|
-1L,
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
||||||
-1L);
|
-1L);
|
||||||
|
|
||||||
/* Start table */
|
/* Start table */
|
||||||
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
||||||
|
@ -6623,7 +6596,7 @@ void Usr_SeeTeachers (void)
|
||||||
/***** Start frame *****/
|
/***** Start frame *****/
|
||||||
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_TEACHER][Usr_SEX_UNKNOWN],
|
Lay_StartRoundFrame (NULL,Txt_ROLES_PLURAL_Abc[Rol_TEACHER][Usr_SEX_UNKNOWN],
|
||||||
(Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO) ? (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ? Usr_PutIconToPrintTchs :
|
(Gbl.Usrs.Me.ListType == Usr_CLASS_PHOTO) ? (Gbl.Usrs.LstUsrs[Rol_TEACHER].NumUsrs ? Usr_PutIconToPrintTchs :
|
||||||
NULL) :
|
NULL) :
|
||||||
((Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM) ? Usr_PutIconToShowTchsAllData :
|
((Gbl.Usrs.Me.LoggedRole >= Rol_DEG_ADM) ? Usr_PutIconToShowTchsAllData :
|
||||||
NULL));
|
NULL));
|
||||||
|
|
||||||
|
@ -6655,12 +6628,12 @@ void Usr_SeeTeachers (void)
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
||||||
-1L,
|
-1L,
|
||||||
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
||||||
-1L,
|
-1L,
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
||||||
-1L);
|
-1L);
|
||||||
|
|
||||||
/* Start table */
|
/* Start table */
|
||||||
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
||||||
|
@ -6864,12 +6837,12 @@ void Usr_SeeStdClassPhotoPrn (void)
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
Gbl.Scope.Current == Sco_SCOPE_DEG ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
Gbl.Scope.Current == Sco_SCOPE_CTR ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
Gbl.Scope.Current == Sco_SCOPE_INS) ? Gbl.CurrentIns.Ins.InsCod :
|
||||||
-1L,
|
-1L,
|
||||||
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
(Gbl.Scope.Current == Sco_SCOPE_CRS ||
|
||||||
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
Gbl.Scope.Current == Sco_SCOPE_DEG) ? Gbl.CurrentDeg.Deg.DegCod :
|
||||||
-1L,
|
-1L,
|
||||||
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
Gbl.Scope.Current == Sco_SCOPE_CRS ? Gbl.CurrentCrs.Crs.CrsCod :
|
||||||
-1L);
|
-1L);
|
||||||
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
fprintf (Gbl.F.Out,"<table style=\"width:100%%;\">");
|
||||||
Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN,Rol_STUDENT);
|
Usr_DrawClassPhoto (Usr_CLASS_PHOTO_PRN,Rol_STUDENT);
|
||||||
fprintf (Gbl.F.Out,"</table>");
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
Loading…
Reference in New Issue