mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-01 22:35:28 +02:00
Version 14.81.2
This commit is contained in:
parent
5c0fafb58a
commit
aec8df96e4
|
@ -103,11 +103,12 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.81.1 (2015/03/09)"
|
#define Log_PLATFORM_VERSION "SWAD 14.81.2 (2015/03/09)"
|
||||||
|
|
||||||
// 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 | tail -1
|
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h | tail -1
|
||||||
/*
|
/*
|
||||||
|
Version 14.81.2: Mar 09, 2015 Information about number of courses in user's public profile. (? lines)
|
||||||
Version 14.81.1: Mar 09, 2015 Information about number of messages sent in user's public profile. (179545 lines)
|
Version 14.81.1: Mar 09, 2015 Information about number of messages sent in user's public profile. (179545 lines)
|
||||||
Version 14.81: Mar 09, 2015 Information about number of forum posts in user's public profile. (179512 lines)
|
Version 14.81: Mar 09, 2015 Information about number of forum posts in user's public profile. (179512 lines)
|
||||||
Version 14.80.19: Mar 09, 2015 Fixed bug in web service, reported by Juan Miguel Boyero Corral. (179482 lines)
|
Version 14.80.19: Mar 09, 2015 Fixed bug in web service, reported by Juan Miguel Boyero Corral. (179482 lines)
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -5548,6 +5548,27 @@ const char *Txt_courses =
|
||||||
"disciplinas";
|
"disciplinas";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Courses_as_a_ROLE = // Warning: it is very important to include %s in the following sentences
|
||||||
|
#if L==0
|
||||||
|
"Assignatures com %s";
|
||||||
|
#elif L==1
|
||||||
|
"Kurse als %s";
|
||||||
|
#elif L==2
|
||||||
|
"Courses as %s";
|
||||||
|
#elif L==3
|
||||||
|
"Asignaturas como %s";
|
||||||
|
#elif L==4
|
||||||
|
"Matières comme %s";
|
||||||
|
#elif L==5
|
||||||
|
"Asignaturas como %s"; // Okoteve traducción
|
||||||
|
#elif L==6
|
||||||
|
"Corsi come %s";
|
||||||
|
#elif L==7
|
||||||
|
"Kursy jako %s";
|
||||||
|
#elif L==8
|
||||||
|
"Disciplinas como %s";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_X_courses_have_been_eliminated = // Warning: it is very important to include %u in the following sentences
|
const char *Txt_X_courses_have_been_eliminated = // Warning: it is very important to include %u in the following sentences
|
||||||
#if L==0
|
#if L==0
|
||||||
"Se ha(n) eliminado %u asignatura(s)."; // Necessita traduccio
|
"Se ha(n) eliminado %u asignatura(s)."; // Necessita traduccio
|
||||||
|
|
88
swad_user.c
88
swad_user.c
|
@ -110,6 +110,9 @@ static void Usr_GetMyLastData (void);
|
||||||
static void Usr_GetUsrCommentsFromString (char *Str,struct UsrData *UsrDat);
|
static void Usr_GetUsrCommentsFromString (char *Str,struct UsrData *UsrDat);
|
||||||
static Usr_Sex_t Usr_GetSexFromStr (const char *Str);
|
static Usr_Sex_t Usr_GetSexFromStr (const char *Str);
|
||||||
|
|
||||||
|
static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role);
|
||||||
|
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole);
|
||||||
|
|
||||||
static bool Usr_CheckIfMyBirthdayHasNotBeenCongratulated (void);
|
static bool Usr_CheckIfMyBirthdayHasNotBeenCongratulated (void);
|
||||||
static void Usr_InsertMyBirthday (void);
|
static void Usr_InsertMyBirthday (void);
|
||||||
|
|
||||||
|
@ -716,7 +719,7 @@ bool Usr_CheckIfUsrIsAdm (long UsrCod,Sco_Scope_t Scope,long Cod)
|
||||||
|
|
||||||
bool Usr_CheckIfUsrIsSuperuser (long UsrCod)
|
bool Usr_CheckIfUsrIsSuperuser (long UsrCod)
|
||||||
{
|
{
|
||||||
char Query[512];
|
char Query[128];
|
||||||
|
|
||||||
/***** Get if a user is superuser from database *****/
|
/***** Get if a user is superuser from database *****/
|
||||||
sprintf (Query,"SELECT COUNT(*) FROM admin"
|
sprintf (Query,"SELECT COUNT(*) FROM admin"
|
||||||
|
@ -725,6 +728,38 @@ bool Usr_CheckIfUsrIsSuperuser (long UsrCod)
|
||||||
return (DB_QueryCOUNT (Query,"can not check if a user is superuser") != 0);
|
return (DB_QueryCOUNT (Query,"can not check if a user is superuser") != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********* Get number of courses in with a user have a given role ************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned Usr_GetNumCrssOfUsrWithARole (long UsrCod,Rol_Role_t Role)
|
||||||
|
{
|
||||||
|
char Query[128];
|
||||||
|
|
||||||
|
/***** Get the number of teachers in a course from database ******/
|
||||||
|
sprintf (Query,"SELECT COUNT(*) FROM crs_usr"
|
||||||
|
" WHERE UsrCod='%ld' AND Role='%u'",
|
||||||
|
UsrCod,(unsigned) Role);
|
||||||
|
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of courses of a user with a role");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********* Get number of students in courses of a user as teacher ************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static unsigned Usr_GetNumUsrsOtherRoleInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,Rol_Role_t OthersRole)
|
||||||
|
{
|
||||||
|
char Query[256];
|
||||||
|
|
||||||
|
/***** Get the number of teachers in a course from database ******/
|
||||||
|
sprintf (Query,"SELECT COUNT(DISTINCT UsrCod) FROM crs_usr"
|
||||||
|
" WHERE CrsCod IN"
|
||||||
|
" (SELECT CrsCod FROM crs_usr WHERE UsrCod='%ld' AND Role='%u')"
|
||||||
|
" AND Role='%u'",
|
||||||
|
UsrCod,(unsigned) UsrRole,(unsigned) OthersRole);
|
||||||
|
return (unsigned) DB_QueryCOUNT (Query,"can not get the number of courses of a user with a role");
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Check if a user belongs to any of my courses ****************/
|
/*************** Check if a user belongs to any of my courses ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -7518,15 +7553,21 @@ void Usr_ChangeProfileVisibility (void)
|
||||||
void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
||||||
{
|
{
|
||||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||||
extern const char *Txt_Shortcut;
|
// extern const char *Txt_Shortcut;
|
||||||
extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
// extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES];
|
||||||
|
extern const char *Txt_Courses_as_a_ROLE;
|
||||||
|
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
|
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
|
||||||
extern const char *Txt_Forum_posts;
|
extern const char *Txt_Forum_posts;
|
||||||
extern const char *Txt_Messages_sent;
|
extern const char *Txt_Messages_sent;
|
||||||
|
unsigned NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER);
|
||||||
|
unsigned NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT);
|
||||||
|
|
||||||
/***** Start table *****/
|
/***** Start table *****/
|
||||||
Lay_StartRoundFrameTable10 (NULL,2,NULL);
|
Lay_StartRoundFrameTable10 (NULL,2,NULL);
|
||||||
|
|
||||||
/***** Shortcut to the user's profile *****/
|
/***** Shortcut to the user's profile *****/
|
||||||
|
/*
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
"<td class=\"%s\""
|
"<td class=\"%s\""
|
||||||
" style=\"text-align:right; vertical-align:middle;\">"
|
" style=\"text-align:right; vertical-align:middle;\">"
|
||||||
|
@ -7543,6 +7584,47 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
|
||||||
Txt_Shortcut,
|
Txt_Shortcut,
|
||||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],UsrDat->Nickname,
|
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],UsrDat->Nickname,
|
||||||
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],UsrDat->Nickname);
|
Cfg_HTTPS_URL_SWAD_CGI,Txt_STR_LANG_ID[Gbl.Prefs.Language],UsrDat->Nickname);
|
||||||
|
*/
|
||||||
|
/***** Number of courses in which the user is teacher or student *****/
|
||||||
|
if (NumCrssUsrIsTeacher)
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"%s\""
|
||||||
|
" style=\"text-align:right; vertical-align:middle;\">",
|
||||||
|
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||||
|
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
|
||||||
|
Txt_ROLES_SINGULAR_abc[Rol_ROLE_TEACHER][UsrDat->Sex]);
|
||||||
|
fprintf (Gbl.F.Out,":"
|
||||||
|
"</td>"
|
||||||
|
"<td class=\"DAT\""
|
||||||
|
" style=\"text-align:left; vertical-align:middle;\">"
|
||||||
|
"%u (%u %s)"
|
||||||
|
"</a>"
|
||||||
|
"</td>",
|
||||||
|
NumCrssUsrIsTeacher,
|
||||||
|
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_TEACHER,Rol_ROLE_STUDENT),
|
||||||
|
Txt_ROLES_PLURAL_abc[Rol_ROLE_STUDENT][Usr_SEX_UNKNOWN]);
|
||||||
|
}
|
||||||
|
if (NumCrssUsrIsStudent)
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"%s\""
|
||||||
|
" style=\"text-align:right; vertical-align:middle;\">",
|
||||||
|
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||||
|
fprintf (Gbl.F.Out,Txt_Courses_as_a_ROLE,
|
||||||
|
Txt_ROLES_SINGULAR_abc[Rol_ROLE_STUDENT][UsrDat->Sex]);
|
||||||
|
fprintf (Gbl.F.Out,":"
|
||||||
|
"</td>"
|
||||||
|
"<td class=\"DAT\""
|
||||||
|
" style=\"text-align:left; vertical-align:middle;\">"
|
||||||
|
"%u (%u %s)"
|
||||||
|
"</a>"
|
||||||
|
"</td>"
|
||||||
|
"</tr>",
|
||||||
|
NumCrssUsrIsStudent,
|
||||||
|
Usr_GetNumUsrsOtherRoleInCrssOfAUsr (UsrDat->UsrCod,Rol_ROLE_STUDENT,Rol_ROLE_TEACHER),
|
||||||
|
Txt_ROLES_PLURAL_abc[Rol_ROLE_TEACHER][Usr_SEX_UNKNOWN]);
|
||||||
|
}
|
||||||
|
|
||||||
/***** Number of posts in forums *****/
|
/***** Number of posts in forums *****/
|
||||||
fprintf (Gbl.F.Out,"<tr>"
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user