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";