mirror of https://github.com/acanas/swad-core.git
Version 18.64.7
This commit is contained in:
parent
a6e78a8a14
commit
dc24789ff8
|
@ -428,10 +428,11 @@ En OpenSWAD:
|
|||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.64.6 (2019-03-05)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 18.64.7 (2019-03-05)"
|
||||
#define CSS_FILE "swad18.64.css"
|
||||
#define JS_FILE "swad18.64.js"
|
||||
/*
|
||||
Version 18.64.7: Mar 05, 2019 Changes in user's figures. (238506 lines)
|
||||
Version 18.64.6: Mar 05, 2019 Added non-editing teachers in user's figures. (238525 lines)
|
||||
Version 18.64.5: Mar 05, 2019 Changes writing floating point numbers.
|
||||
For load speed issues, the number of publications by default in the timeline becomes 20 again.
|
||||
|
|
|
@ -353,7 +353,6 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||
extern const char *Txt_courses_ABBREVIATION;
|
||||
extern const char *Txt_teachers_ABBREVIATION;
|
||||
extern const char *Txt_non_editing_teachers_ABBREVIATION;
|
||||
extern const char *Txt_students_ABBREVIATION;
|
||||
extern const char *Txt_Files_uploaded;
|
||||
extern const char *Txt_file;
|
||||
|
@ -397,12 +396,13 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
NumCrssUsrIsTch,
|
||||
Txt_courses_ABBREVIATION);
|
||||
if (NumCrssUsrIsTch)
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_TCH,Rol_TCH),
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_TCH,
|
||||
(1 << Rol_NET) |
|
||||
(1 << Rol_TCH)),
|
||||
Txt_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_TCH,Rol_NET),
|
||||
Txt_non_editing_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_TCH,Rol_STD),
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_TCH,
|
||||
(1 << Rol_STD)),
|
||||
Txt_students_ABBREVIATION);
|
||||
fprintf (Gbl.F.Out,"</li>");
|
||||
|
||||
|
@ -416,12 +416,13 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
NumCrssUsrIsNET,
|
||||
Txt_courses_ABBREVIATION);
|
||||
if (NumCrssUsrIsNET)
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_NET,Rol_TCH),
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_NET,
|
||||
(1 << Rol_NET) |
|
||||
(1 << Rol_TCH)),
|
||||
Txt_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_NET,Rol_NET),
|
||||
Txt_non_editing_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_NET,Rol_STD),
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_NET,
|
||||
(1 << Rol_STD)),
|
||||
Txt_students_ABBREVIATION);
|
||||
fprintf (Gbl.F.Out,"</li>");
|
||||
|
||||
|
@ -435,12 +436,13 @@ void Prf_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
|||
NumCrssUsrIsStd,
|
||||
Txt_courses_ABBREVIATION);
|
||||
if (NumCrssUsrIsStd)
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STD,Rol_TCH),
|
||||
fprintf (Gbl.F.Out," (%u %s/%u %s)",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STD,
|
||||
(1 << Rol_NET) |
|
||||
(1 << Rol_TCH)),
|
||||
Txt_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STD,Rol_NET),
|
||||
Txt_non_editing_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STD,Rol_STD),
|
||||
Usr_GetNumUsrsInCrssOfAUsr (UsrDat->UsrCod,Rol_STD,
|
||||
(1 << Rol_STD)),
|
||||
Txt_students_ABBREVIATION);
|
||||
fprintf (Gbl.F.Out,"</li>");
|
||||
|
||||
|
|
|
@ -993,7 +993,6 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
|
|||
extern const char *Txt_course;
|
||||
extern const char *Txt_courses;
|
||||
extern const char *Txt_teachers_ABBREVIATION;
|
||||
extern const char *Txt_non_editing_teachers_ABBREVIATION;
|
||||
extern const char *Txt_students_ABBREVIATION;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1012,12 +1011,13 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role,
|
|||
Txt_courses);
|
||||
if (NumCrss)
|
||||
{
|
||||
fprintf (Gbl.F.Rep," (%u %s / %u %s / %u %s):",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Role,Rol_TCH),
|
||||
fprintf (Gbl.F.Rep," (%u %s / %u %s):",
|
||||
Usr_GetNumUsrsInCrssOfAUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Role,
|
||||
(1 << Rol_NET) |
|
||||
(1 << Rol_TCH)),
|
||||
Txt_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Role,Rol_NET),
|
||||
Txt_non_editing_teachers_ABBREVIATION,
|
||||
Usr_GetNumUsrsInCrssOfAUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Role,Rol_STD),
|
||||
Usr_GetNumUsrsInCrssOfAUsr (Gbl.Usrs.Me.UsrDat.UsrCod,Role,
|
||||
(1 << Rol_STD)),
|
||||
Txt_students_ABBREVIATION);
|
||||
|
||||
/***** Get courses of a user from database *****/
|
||||
|
|
57
swad_text.c
57
swad_text.c
|
@ -25385,27 +25385,6 @@ const char *Txt_Non_blank_BR_questions =
|
|||
"Questões<br />respondidas";
|
||||
#endif
|
||||
|
||||
const char *Txt_non_editing_teachers_ABBREVIATION = // Abbreviation of "non-editing teachers"
|
||||
#if L==1 // ca
|
||||
"prf.n.e.";
|
||||
#elif L==2 // de
|
||||
"n.b.Leh.";
|
||||
#elif L==3 // en
|
||||
"n-e.tch.";
|
||||
#elif L==4 // es
|
||||
"prf.n.e.";
|
||||
#elif L==5 // fr
|
||||
"ens.n-é";
|
||||
#elif L==6 // gn
|
||||
"prf.n.e."; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"prf.n-e.";
|
||||
#elif L==8 // pl
|
||||
"nau.n.e.";
|
||||
#elif L==9 // pt
|
||||
"prf.n.e.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Not_applicable =
|
||||
#if L==1 // ca
|
||||
"No aplicable";
|
||||
|
@ -41366,23 +41345,23 @@ const char *Txt_Student_comment =
|
|||
|
||||
const char *Txt_students_ABBREVIATION = // Abbreviation of "students"
|
||||
#if L==1 // ca
|
||||
"est.";
|
||||
"estu.";
|
||||
#elif L==2 // de
|
||||
"Stu.";
|
||||
"Stud.";
|
||||
#elif L==3 // en
|
||||
"stu.";
|
||||
"stud.";
|
||||
#elif L==4 // es
|
||||
"est.";
|
||||
"estu.";
|
||||
#elif L==5 // fr
|
||||
"ét.";
|
||||
"étu.";
|
||||
#elif L==6 // gn
|
||||
"Tem.";
|
||||
"Temi.";
|
||||
#elif L==7 // it
|
||||
"stu.";
|
||||
"stud.";
|
||||
#elif L==8 // pl
|
||||
"stu."; // Potrzebujesz tlumaczenie
|
||||
"stud."; // Potrzebujesz tlumaczenie
|
||||
#elif L==9 // pt
|
||||
"est.";
|
||||
"estu.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Student_record_card_in_this_course_has_been_updated =
|
||||
|
@ -42622,23 +42601,23 @@ const char *Txt_Take_a_test =
|
|||
|
||||
const char *Txt_teachers_ABBREVIATION = // Abbreviation of "Teachers"
|
||||
#if L==1 // ca
|
||||
"prf.";
|
||||
"prof.";
|
||||
#elif L==2 // de
|
||||
"Leh.";
|
||||
"Lehr.";
|
||||
#elif L==3 // en
|
||||
"tch.";
|
||||
"teac.";
|
||||
#elif L==4 // es
|
||||
"prf.";
|
||||
"prof.";
|
||||
#elif L==5 // fr
|
||||
"ens.";
|
||||
"ense.";
|
||||
#elif L==6 // gn
|
||||
"prf."; // Okoteve traducción
|
||||
"prof."; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"prf.";
|
||||
"prof.";
|
||||
#elif L==8 // pl
|
||||
"nau.";
|
||||
"nauc.";
|
||||
#elif L==9 // pt
|
||||
"prf.";
|
||||
"prof.";
|
||||
#endif
|
||||
|
||||
const char *Txt_Teachers_files_area =
|
||||
|
|
44
swad_user.c
44
swad_user.c
|
@ -1022,12 +1022,16 @@ unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******* Get number of users with different role in courses of a user ********/
|
||||
/****** Get number of users with some given roles in courses of a user *******/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Usr_MAX_BYTES_ROLES_STR (Rol_NUM_ROLES * (10 + 1))
|
||||
unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||
Rol_Role_t OthersRole)
|
||||
unsigned OthersRoles)
|
||||
{
|
||||
Rol_Role_t Role;
|
||||
char UnsignedStr[10 + 1];
|
||||
char OthersRolesStr[Usr_MAX_BYTES_ROLES_STR + 1];
|
||||
char SubQueryRole[64];
|
||||
unsigned NumUsrs;
|
||||
// This query can be made in a unique, but slower, query
|
||||
|
@ -1068,32 +1072,26 @@ unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
|||
UsrCod,SubQueryRole);
|
||||
|
||||
/***** Get the number of students/teachers in a course from database ******/
|
||||
switch (OthersRole)
|
||||
{
|
||||
case Rol_STD: // Student
|
||||
sprintf (SubQueryRole," AND crs_usr.Role=%u",
|
||||
(unsigned) Rol_STD);
|
||||
break;
|
||||
case Rol_NET: // Non-editing teacher
|
||||
sprintf (SubQueryRole," AND crs_usr.Role=%u",
|
||||
(unsigned) Rol_NET);
|
||||
break;
|
||||
case Rol_TCH: // or teacher
|
||||
sprintf (SubQueryRole," AND crs_usr.Role=%u",
|
||||
(unsigned) Rol_TCH);
|
||||
break;
|
||||
default:
|
||||
SubQueryRole[0] = '\0';
|
||||
Lay_ShowErrorAndExit ("Wrong role.");
|
||||
break;
|
||||
}
|
||||
OthersRolesStr[0] = '\0';
|
||||
for (Role = Rol_STD;
|
||||
Role <= Rol_TCH;
|
||||
Role++)
|
||||
if ((OthersRoles & (1 << Role)))
|
||||
{
|
||||
sprintf (UnsignedStr,"%u",(unsigned) Role);
|
||||
if (OthersRolesStr[0]) // Not empty
|
||||
Str_Concat (OthersRolesStr,",",
|
||||
Usr_MAX_BYTES_ROLES_STR);
|
||||
Str_Concat (OthersRolesStr,UnsignedStr,
|
||||
Usr_MAX_BYTES_ROLES_STR);
|
||||
}
|
||||
NumUsrs =
|
||||
(unsigned) DB_QueryCOUNT ("can not get the number of users",
|
||||
"SELECT COUNT(DISTINCT crs_usr.UsrCod)"
|
||||
" FROM crs_usr,usr_courses_tmp"
|
||||
" WHERE crs_usr.CrsCod=usr_courses_tmp.CrsCod"
|
||||
"%s",
|
||||
SubQueryRole);
|
||||
" AND crs_usr.Role IN (%s)",
|
||||
OthersRolesStr);
|
||||
|
||||
/***** Remove temporary table *****/
|
||||
DB_Query ("can not remove temporary tables",
|
||||
|
|
|
@ -259,7 +259,7 @@ unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role);
|
|||
unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role);
|
||||
|
||||
unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
|
||||
Rol_Role_t OthersRole);
|
||||
unsigned OthersRoles);
|
||||
|
||||
void Usr_FlushCacheUsrBelongsToCurrentCrs (void);
|
||||
bool Usr_CheckIfUsrBelongsToCurrentCrs (const struct UsrData *UsrDat);
|
||||
|
|
Loading…
Reference in New Issue