@@ -79,8 +79,8 @@ func IsErrDataExpired(err error) bool {
7979 return ok
8080}
8181
82- // GetSettingNoCache returns specific setting without using the cache
83- func GetSettingNoCache (ctx context.Context , key string ) (* Setting , error ) {
82+ // GetSetting returns specific setting without using the cache
83+ func GetSetting (ctx context.Context , key string ) (* Setting , error ) {
8484 v , err := GetSettings (ctx , []string {key })
8585 if err != nil {
8686 return nil , err
@@ -93,11 +93,11 @@ func GetSettingNoCache(ctx context.Context, key string) (*Setting, error) {
9393
9494const contextCacheKey = "system_setting"
9595
96- // GetSetting returns the setting value via the key
97- func GetSetting (ctx context.Context , key string ) (string , error ) {
96+ // GetSettingWithCache returns the setting value via the key
97+ func GetSettingWithCache (ctx context.Context , key string ) (string , error ) {
9898 return cache .GetWithContextCache (ctx , contextCacheKey , key , func () (string , error ) {
9999 return cache .GetString (genSettingCacheKey (key ), func () (string , error ) {
100- res , err := GetSettingNoCache (ctx , key )
100+ res , err := GetSetting (ctx , key )
101101 if err != nil {
102102 return "" , err
103103 }
@@ -110,6 +110,15 @@ func GetSetting(ctx context.Context, key string) (string, error) {
110110// none existing keys and errors are ignored and result in false
111111func GetSettingBool (ctx context.Context , key string ) bool {
112112 s , _ := GetSetting (ctx , key )
113+ if s == nil {
114+ return false
115+ }
116+ v , _ := strconv .ParseBool (s .SettingValue )
117+ return v
118+ }
119+
120+ func GetSettingWithCacheBool (ctx context.Context , key string ) bool {
121+ s , _ := GetSettingWithCache (ctx , key )
113122 v , _ := strconv .ParseBool (s )
114123 return v
115124}
@@ -120,7 +129,7 @@ func GetSettings(ctx context.Context, keys []string) (map[string]*Setting, error
120129 keys [i ] = strings .ToLower (keys [i ])
121130 }
122131 settings := make ([]* Setting , 0 , len (keys ))
123- if err := db .GetEngine (db . DefaultContext ).
132+ if err := db .GetEngine (ctx ).
124133 Where (builder .In ("setting_key" , keys )).
125134 Find (& settings ); err != nil {
126135 return nil , err
@@ -151,9 +160,9 @@ func (settings AllSettings) GetVersion(key string) int {
151160}
152161
153162// GetAllSettings returns all settings from user
154- func GetAllSettings () (AllSettings , error ) {
163+ func GetAllSettings (ctx context. Context ) (AllSettings , error ) {
155164 settings := make ([]* Setting , 0 , 5 )
156- if err := db .GetEngine (db . DefaultContext ).
165+ if err := db .GetEngine (ctx ).
157166 Find (& settings ); err != nil {
158167 return nil , err
159168 }
@@ -168,12 +177,12 @@ func GetAllSettings() (AllSettings, error) {
168177func DeleteSetting (ctx context.Context , setting * Setting ) error {
169178 cache .RemoveContextData (ctx , contextCacheKey , setting .SettingKey )
170179 cache .Remove (genSettingCacheKey (setting .SettingKey ))
171- _ , err := db .GetEngine (db . DefaultContext ).Delete (setting )
180+ _ , err := db .GetEngine (ctx ).Delete (setting )
172181 return err
173182}
174183
175184func SetSettingNoVersion (ctx context.Context , key , value string ) error {
176- s , err := GetSettingNoCache (ctx , key )
185+ s , err := GetSetting (ctx , key )
177186 if IsErrSettingIsNotExist (err ) {
178187 return SetSetting (ctx , & Setting {
179188 SettingKey : key ,
@@ -189,7 +198,7 @@ func SetSettingNoVersion(ctx context.Context, key, value string) error {
189198
190199// SetSetting updates a users' setting for a specific key
191200func SetSetting (ctx context.Context , setting * Setting ) error {
192- if err := upsertSettingValue (strings .ToLower (setting .SettingKey ), setting .SettingValue , setting .Version ); err != nil {
201+ if err := upsertSettingValue (ctx , strings .ToLower (setting .SettingKey ), setting .SettingValue , setting .Version ); err != nil {
193202 return err
194203 }
195204
@@ -205,8 +214,8 @@ func SetSetting(ctx context.Context, setting *Setting) error {
205214 return nil
206215}
207216
208- func upsertSettingValue (key , value string , version int ) error {
209- return db .WithTx (db . DefaultContext , func (ctx context.Context ) error {
217+ func upsertSettingValue (parentCtx context. Context , key , value string , version int ) error {
218+ return db .WithTx (parentCtx , func (ctx context.Context ) error {
210219 e := db .GetEngine (ctx )
211220
212221 // here we use a general method to do a safe upsert for different databases (and most transaction levels)
@@ -249,9 +258,9 @@ var (
249258 LibravatarService * libravatar.Libravatar
250259)
251260
252- func Init () error {
261+ func Init (ctx context. Context ) error {
253262 var disableGravatar bool
254- disableGravatarSetting , err := GetSettingNoCache ( db . DefaultContext , KeyPictureDisableGravatar )
263+ disableGravatarSetting , err := GetSetting ( ctx , KeyPictureDisableGravatar )
255264 if IsErrSettingIsNotExist (err ) {
256265 disableGravatar = setting_module .GetDefaultDisableGravatar ()
257266 disableGravatarSetting = & Setting {SettingValue : strconv .FormatBool (disableGravatar )}
@@ -262,7 +271,7 @@ func Init() error {
262271 }
263272
264273 var enableFederatedAvatar bool
265- enableFederatedAvatarSetting , err := GetSettingNoCache ( db . DefaultContext , KeyPictureEnableFederatedAvatar )
274+ enableFederatedAvatarSetting , err := GetSetting ( ctx , KeyPictureEnableFederatedAvatar )
266275 if IsErrSettingIsNotExist (err ) {
267276 enableFederatedAvatar = setting_module .GetDefaultEnableFederatedAvatar (disableGravatar )
268277 enableFederatedAvatarSetting = & Setting {SettingValue : strconv .FormatBool (enableFederatedAvatar )}
@@ -275,13 +284,13 @@ func Init() error {
275284 if setting_module .OfflineMode {
276285 disableGravatar = true
277286 enableFederatedAvatar = false
278- if ! GetSettingBool (db . DefaultContext , KeyPictureDisableGravatar ) {
279- if err := SetSettingNoVersion (db . DefaultContext , KeyPictureDisableGravatar , "true" ); err != nil {
287+ if ! GetSettingBool (ctx , KeyPictureDisableGravatar ) {
288+ if err := SetSettingNoVersion (ctx , KeyPictureDisableGravatar , "true" ); err != nil {
280289 return fmt .Errorf ("Failed to set setting %q: %w" , KeyPictureDisableGravatar , err )
281290 }
282291 }
283- if GetSettingBool (db . DefaultContext , KeyPictureEnableFederatedAvatar ) {
284- if err := SetSettingNoVersion (db . DefaultContext , KeyPictureEnableFederatedAvatar , "false" ); err != nil {
292+ if GetSettingBool (ctx , KeyPictureEnableFederatedAvatar ) {
293+ if err := SetSettingNoVersion (ctx , KeyPictureEnableFederatedAvatar , "false" ); err != nil {
285294 return fmt .Errorf ("Failed to set setting %q: %w" , KeyPictureEnableFederatedAvatar , err )
286295 }
287296 }
0 commit comments