From aec8df96e408b8e11ebd9f12600f8c266b45c519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 9 Mar 2015 19:22:25 +0100 Subject: [PATCH] Version 14.81.2 --- swad_changelog.h | 3 +- swad_text.c | 21 ++++++++++++ swad_user.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 108 insertions(+), 4 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index ebf226ad4..276a185c2 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -103,11 +103,12 @@ /****************************** 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: // 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: 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) diff --git a/swad_text.c b/swad_text.c index 8daea8e22..e76f65b57 100644 --- a/swad_text.c +++ b/swad_text.c @@ -5548,6 +5548,27 @@ const char *Txt_courses = "disciplinas"; #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 #if L==0 "Se ha(n) eliminado %u asignatura(s)."; // Necessita traduccio diff --git a/swad_user.c b/swad_user.c index 731a906af..b29352547 100644 --- a/swad_user.c +++ b/swad_user.c @@ -110,6 +110,9 @@ static void Usr_GetMyLastData (void); static void Usr_GetUsrCommentsFromString (char *Str,struct UsrData *UsrDat); 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 void Usr_InsertMyBirthday (void); @@ -716,7 +719,7 @@ bool Usr_CheckIfUsrIsAdm (long UsrCod,Sco_Scope_t Scope,long Cod) bool Usr_CheckIfUsrIsSuperuser (long UsrCod) { - char Query[512]; + char Query[128]; /***** Get if a user is superuser from database *****/ 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); } +/*****************************************************************************/ +/********* 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 ****************/ /*****************************************************************************/ @@ -7518,15 +7553,21 @@ void Usr_ChangeProfileVisibility (void) void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat) { extern const char *The_ClassFormul[The_NUM_THEMES]; - extern const char *Txt_Shortcut; - extern const char *Txt_STR_LANG_ID[Txt_NUM_LANGUAGES]; + // extern const char *Txt_Shortcut; + // 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_Messages_sent; + unsigned NumCrssUsrIsTeacher = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_TEACHER); + unsigned NumCrssUsrIsStudent = Usr_GetNumCrssOfUsrWithARole (UsrDat->UsrCod,Rol_ROLE_STUDENT); /***** Start table *****/ Lay_StartRoundFrameTable10 (NULL,2,NULL); /***** Shortcut to the user's profile *****/ + /* fprintf (Gbl.F.Out,"" "" @@ -7543,6 +7584,47 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat) 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); + */ + /***** Number of courses in which the user is teacher or student *****/ + if (NumCrssUsrIsTeacher) + { + fprintf (Gbl.F.Out,"" + "", + 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,":" + "" + "" + "%u (%u %s)" + "" + "", + 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,"" + "", + 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,":" + "" + "" + "%u (%u %s)" + "" + "" + "", + 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 *****/ fprintf (Gbl.F.Out,""