diff --git a/swad_changelog.h b/swad_changelog.h index e76cee8c..e53491f3 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -459,10 +459,13 @@ En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 18.86 (2019-03-22)" +#define Log_PLATFORM_VERSION "SWAD 18.86.1 (2019-03-23)" #define CSS_FILE "swad18.85.1.css" #define JS_FILE "swad18.85.js" /* + Version 18.86.1: Mar 23, 2019 Changes in writing of a floating point number. + Mask applied to figure about privacy. + Mash applied when receiving form with privacy. (240944 lines) Version 18.86: Mar 22, 2019 Profile visibility is splitted into basic and extended. Fixed bug storing media in database. (240928 lines) 6 changes necessary in database: diff --git a/swad_figure.c b/swad_figure.c index 0215fc59..99e059f2 100644 --- a/swad_figure.c +++ b/swad_figure.c @@ -44,6 +44,7 @@ #include "swad_logo.h" #include "swad_network.h" #include "swad_notice.h" +#include "swad_privacy.h" #include "swad_profile.h" #include "swad_role.h" #include "swad_table.h" @@ -169,7 +170,8 @@ static void Fig_GetAndShowMsgsStats (void); static void Fig_GetAndShowSurveysStats (void); static void Fig_GetAndShowNumUsrsPerPrivacy (void); static void Fig_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject, - const char *FieldName); + const char *FieldName, + unsigned MaskAllowedVisibility); static void Fig_GetAndShowNumUsrsPerCookies (void); static void Fig_GetAndShowNumUsrsPerLanguage (void); static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void); @@ -4817,13 +4819,16 @@ static void Fig_GetAndShowNumUsrsPerPrivacy (void) /***** Privacy for photo *****/ Fig_GetAndShowNumUsrsPerPrivacyForAnObject (Txt_Photo, - "PhotoVisibility"); + "PhotoVisibility", + Pri_PHOTO_ALLOWED_VIS); /***** Privacy for public profile *****/ Fig_GetAndShowNumUsrsPerPrivacyForAnObject (Txt_Basic_public_profile, - "BaPrfVisibility"); + "BaPrfVisibility", + Pri_BASIC_PROFILE_ALLOWED_VIS); Fig_GetAndShowNumUsrsPerPrivacyForAnObject (Txt_Extended_public_profile, - "ExPrfVisibility"); + "ExPrfVisibility", + Pri_EXTENDED_PROFILE_ALLOWED_VIS); /***** End table and box *****/ Box_EndBoxTable (); @@ -4834,7 +4839,8 @@ static void Fig_GetAndShowNumUsrsPerPrivacy (void) /*****************************************************************************/ static void Fig_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject, - const char *FieldName) + const char *FieldName, + unsigned MaskAllowedVisibility) { extern const char *Txt_No_of_users; extern const char *Txt_PERCENT_of_users; @@ -4865,37 +4871,39 @@ static void Fig_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject, for (Visibility = (Pri_Visibility_t) 0; Visibility < Pri_NUM_OPTIONS_PRIVACY; Visibility++) - { - /* Get the number of users who have chosen this privacy option from database */ - if (asprintf (&SubQuery,"usr_data.%s='%s'", - FieldName,Pri_VisibilityDB[Visibility]) < 0) - Lay_NotEnoughMemoryExit (); - NumUsrs[Visibility] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); - free ((void *) SubQuery); + if (MaskAllowedVisibility & (1 << Visibility)) + { + /* Get the number of users who have chosen this privacy option from database */ + if (asprintf (&SubQuery,"usr_data.%s='%s'", + FieldName,Pri_VisibilityDB[Visibility]) < 0) + Lay_NotEnoughMemoryExit (); + NumUsrs[Visibility] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); + free ((void *) SubQuery); - /* Update total number of users */ - NumUsrsTotal += NumUsrs[Visibility]; - } + /* Update total number of users */ + NumUsrsTotal += NumUsrs[Visibility]; + } /***** Write number of users who have chosen each privacy option *****/ for (Visibility = (Pri_Visibility_t) 0; Visibility < Pri_NUM_OPTIONS_PRIVACY; Visibility++) - fprintf (Gbl.F.Out,"" - "" - "%s" - "" - "" - "%u" - "" - "" - "%5.2f%%" - "" - "", - Txt_PRIVACY_OPTIONS[Visibility],NumUsrs[Visibility], - NumUsrsTotal ? (float) NumUsrs[Visibility] * 100.0 / - (float) NumUsrsTotal : - 0); + if (MaskAllowedVisibility & (1 << Visibility)) + fprintf (Gbl.F.Out,"" + "" + "%s" + "" + "" + "%u" + "" + "" + "%5.2f%%" + "" + "", + Txt_PRIVACY_OPTIONS[Visibility],NumUsrs[Visibility], + NumUsrsTotal ? (float) NumUsrs[Visibility] * 100.0 / + (float) NumUsrsTotal : + 0); } /*****************************************************************************/ diff --git a/swad_photo.c b/swad_photo.c index df8062f3..9f38214a 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1310,7 +1310,8 @@ void Pho_ChangePhotoVisibility (void) extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY]; /***** Get param with public/private photo *****/ - Gbl.Usrs.Me.UsrDat.PhotoVisibility = Pri_GetParamVisibility ("VisPho"); + Gbl.Usrs.Me.UsrDat.PhotoVisibility = Pri_GetParamVisibility ("VisPho", + Pri_PHOTO_ALLOWED_VIS); /***** Store public/private photo in database *****/ DB_QueryUPDATE ("can not update your preference about photo visibility", diff --git a/swad_privacy.c b/swad_privacy.c index 36a1dc18..88656c0e 100644 --- a/swad_privacy.c +++ b/swad_privacy.c @@ -220,13 +220,17 @@ Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str) /**************** Get parameter with visibility from form ********************/ /*****************************************************************************/ -Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName) +Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName, + unsigned MaskAllowedVisibility) { - return (Pri_Visibility_t) - Par_GetParToUnsignedLong (ParamName, - 0, - Pri_NUM_OPTIONS_PRIVACY - 1, - (unsigned long) Pri_VISIBILITY_UNKNOWN); + Pri_Visibility_t Visibility; + + Visibility = (Pri_Visibility_t) Par_GetParToUnsignedLong (ParamName, + 0, + Pri_NUM_OPTIONS_PRIVACY - 1, + (unsigned long) Pri_VISIBILITY_UNKNOWN); + return (MaskAllowedVisibility & (1 << Visibility)) ? Visibility : + Pri_VISIBILITY_UNKNOWN; } /*****************************************************************************/ diff --git a/swad_privacy.h b/swad_privacy.h index 9cc44030..e2b4f2c9 100644 --- a/swad_privacy.h +++ b/swad_privacy.h @@ -62,7 +62,8 @@ void Pri_EditMyPrivacy (void); Pri_Visibility_t Pri_GetVisibilityFromStr (const char *Str); -Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName); +Pri_Visibility_t Pri_GetParamVisibility (const char *ParamName, + unsigned MaskAllowedVisibility); bool Pri_ShowingIsAllowed (Pri_Visibility_t Visibility,struct UsrData *UsrDat); diff --git a/swad_profile.c b/swad_profile.c index 7ae62cd2..efae99ab 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -353,7 +353,8 @@ void Prf_ChangeBasicProfileVis (void) extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY]; /***** Get param with public/private photo *****/ - Gbl.Usrs.Me.UsrDat.BaPrfVisibility = Pri_GetParamVisibility ("VisBasPrf"); + Gbl.Usrs.Me.UsrDat.BaPrfVisibility = Pri_GetParamVisibility ("VisBasPrf", + Pri_BASIC_PROFILE_ALLOWED_VIS); /***** Store public/private photo in database *****/ DB_QueryUPDATE ("can not update your preference" @@ -372,7 +373,8 @@ void Prf_ChangeExtendedProfileVis (void) extern const char *Pri_VisibilityDB[Pri_NUM_OPTIONS_PRIVACY]; /***** Get param with public/private photo *****/ - Gbl.Usrs.Me.UsrDat.ExPrfVisibility = Pri_GetParamVisibility ("VisExtPrf"); + Gbl.Usrs.Me.UsrDat.ExPrfVisibility = Pri_GetParamVisibility ("VisExtPrf", + Pri_EXTENDED_PROFILE_ALLOWED_VIS); /***** Store public/private photo in database *****/ DB_QueryUPDATE ("can not update your preference" diff --git a/swad_string.c b/swad_string.c index fbfc7a4d..644c0653 100644 --- a/swad_string.c +++ b/swad_string.c @@ -896,16 +896,14 @@ void Str_WriteFloatNum (FILE *FileDst,float Number) if (IntegerPart != 0.0) Format = "%.1f"; else if (FractionaryPart >= 0.095) - Format = "%.1f"; - else if (FractionaryPart >= 0.0095) Format = "%.2f"; - else if (FractionaryPart >= 0.00095) + else if (FractionaryPart >= 0.0095) Format = "%.3f"; - else if (FractionaryPart >= 0.000095) + else if (FractionaryPart >= 0.00095) Format = "%.4f"; - else if (FractionaryPart >= 0.0000095) + else if (FractionaryPart >= 0.000095) Format = "%.5f"; - else if (FractionaryPart >= 0.00000095) + else if (FractionaryPart >= 0.0000095) Format = "%.6f"; else Format = "%e";