瀏覽代碼

Ability to set gnusocial expire period from control panel

Bob Mottram 8 年之前
父節點
當前提交
5db30ada00
共有 2 個檔案被更改,包括 78 行新增6 行删除
  1. 39
    3
      src/freedombone-app-gnusocial
  2. 39
    3
      src/freedombone-app-postactiv

+ 39
- 3
src/freedombone-app-gnusocial 查看文件

@@ -274,6 +274,40 @@ function gnusocial_set_title {
274 274
     esac
275 275
 }
276 276
 
277
+function gnusocial_set_expire_months {
278
+    GNUSOCIAL_DOMAIN_NAME=$(get_completion_param "gnusocial domain")
279
+    read_config_param "GNUSOCIAL_EXPIRE_MONTHS"
280
+
281
+    data=$(tempfile 2>/dev/null)
282
+    trap "rm -f $data" 0 1 2 5 15
283
+    dialog --title $"GNU Social" \
284
+           --backtitle $"Freedombone Control Panel" \
285
+           --inputbox $'Set an expiry period for posts in months. Anything older will be deleted. Lower values help to keep the database size small and as fast as possible.' 12 60 "$GNUSOCIAL_EXPIRE_MONTHS" 2>$data
286
+    sel=$?
287
+    case $sel in
288
+        0)
289
+            new_expiry_months=$(<$data)
290
+            if [ ${#new_expiry_months} -gt 0 ]; then
291
+                # should contain no spaces
292
+                if [[ "$new_expiry_months" == *" "* ]]; then
293
+                    return
294
+                fi
295
+                # should be a number
296
+                re='^[0-9]+$'
297
+                if ! [[ $new_expiry_months =~ $re ]] ; then
298
+                    return
299
+                fi
300
+                # set the new value
301
+                GNUSOCIAL_EXPIRE_MONTHS=$new_expiry_months
302
+                write_config_param "GNUSOCIAL_EXPIRE_MONTHS" "$GNUSOCIAL_EXPIRE_MONTHS"
303
+                expire_gnusocial_posts "$GNUSOCIAL_DOMAIN_NAME" "gnusocial" "$GNUSOCIAL_EXPIRE_MONTHS"
304
+                dialog --title $"Set GNU Social post expiry period" \
305
+                       --msgbox $"Expiry period set to $GNUSOCIAL_EXPIRE_MONTHS months" 6 60
306
+            fi
307
+           ;;
308
+    esac
309
+}
310
+
277 311
 function configure_interactive_gnusocial {
278 312
     while true
279 313
     do
@@ -281,10 +315,11 @@ function configure_interactive_gnusocial {
281 315
         trap "rm -f $data" 0 1 2 5 15
282 316
         dialog --backtitle $"Freedombone Control Panel" \
283 317
                --title $"GNU Social" \
284
-               --radiolist $"Choose an operation:" 12 70 3 \
318
+               --radiolist $"Choose an operation:" 13 70 4 \
285 319
                1 $"Set a background image" off \
286 320
                2 $"Set the title" off \
287
-               3 $"Exit" on 2> $data
321
+               3 $"Set post expiry period (currently $GNUSOCIAL_EXPIRE_MONTHS months)" off \
322
+               4 $"Exit" on 2> $data
288 323
         sel=$?
289 324
         case $sel in
290 325
             1) return;;
@@ -293,7 +328,8 @@ function configure_interactive_gnusocial {
293 328
         case $(cat $data) in
294 329
             1) gnusocial_set_background_image;;
295 330
             2) gnusocial_set_title;;
296
-            3) break;;
331
+            3) gnusocial_set_expire_months;;
332
+            4) break;;
297 333
         esac
298 334
     done
299 335
 }

+ 39
- 3
src/freedombone-app-postactiv 查看文件

@@ -258,6 +258,40 @@ function postactiv_set_title {
258 258
     esac
259 259
 }
260 260
 
261
+function postactiv_set_expire_months {
262
+    POSTACTIV_DOMAIN_NAME=$(get_completion_param "postactiv domain")
263
+    read_config_param "POSTACTIV_EXPIRE_MONTHS"
264
+
265
+    data=$(tempfile 2>/dev/null)
266
+    trap "rm -f $data" 0 1 2 5 15
267
+    dialog --title $"PostActiv" \
268
+           --backtitle $"Freedombone Control Panel" \
269
+           --inputbox $'Set an expiry period for posts in months. Anything older will be deleted. Lower values help to keep the database size small and as fast as possible.' 12 60 "$POSTACTIV_EXPIRE_MONTHS" 2>$data
270
+    sel=$?
271
+    case $sel in
272
+        0)
273
+            new_expiry_months=$(<$data)
274
+            if [ ${#new_expiry_months} -gt 0 ]; then
275
+                # should contain no spaces
276
+                if [[ "$new_expiry_months" == *" "* ]]; then
277
+                    return
278
+                fi
279
+                # should be a number
280
+                re='^[0-9]+$'
281
+                if ! [[ $new_expiry_months =~ $re ]] ; then
282
+                    return
283
+                fi
284
+                # set the new value
285
+                POSTACTIV_EXPIRE_MONTHS=$new_expiry_months
286
+                write_config_param "POSTACTIV_EXPIRE_MONTHS" "$POSTACTIV_EXPIRE_MONTHS"
287
+                expire_gnusocial_posts "$POSTACTIV_DOMAIN_NAME" "postactiv" "$POSTACTIV_EXPIRE_MONTHS"
288
+                dialog --title $"Set PostActiv post expiry period" \
289
+                       --msgbox $"Expiry period set to $POSTACTIV_EXPIRE_MONTHS months" 6 60
290
+            fi
291
+           ;;
292
+    esac
293
+}
294
+
261 295
 function configure_interactive_postactiv {
262 296
     while true
263 297
     do
@@ -265,10 +299,11 @@ function configure_interactive_postactiv {
265 299
         trap "rm -f $data" 0 1 2 5 15
266 300
         dialog --backtitle $"Freedombone Control Panel" \
267 301
                --title $"PostActiv" \
268
-               --radiolist $"Choose an operation:" 12 70 3 \
302
+               --radiolist $"Choose an operation:" 13 70 4 \
269 303
                1 $"Set a background image" off \
270 304
                2 $"Set the title" off \
271
-               3 $"Exit" on 2> $data
305
+               3 $"Set post expiry period (currently $POSTACTIV_EXPIRE_MONTHS months)" off \
306
+               4 $"Exit" on 2> $data
272 307
         sel=$?
273 308
         case $sel in
274 309
             1) return;;
@@ -277,7 +312,8 @@ function configure_interactive_postactiv {
277 312
         case $(cat $data) in
278 313
             1) postactiv_set_background_image;;
279 314
             2) postactiv_set_title;;
280
-            3) break;;
315
+            3) postactiv_set_expire_months;;
316
+            4) break;;
281 317
         esac
282 318
     done
283 319
 }