From: Paul Hänsch Date: Thu, 28 Mar 2024 15:24:09 +0000 (+0100) Subject: moved wiki() and caching functions from page handler to tools X-Git-Url: https://git.plutz.net/?p=shellwiki;a=commitdiff_plain;h=3e0db89f8d84e84fbc7b8cd5593899fbc3cfa3b9 moved wiki() and caching functions from page handler to tools --- diff --git a/handlers/30_page.sh b/handlers/30_page.sh index 8a22209..cc30ca5 100755 --- a/handlers/30_page.sh +++ b/handlers/30_page.sh @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2022 - 2023 Paul Hänsch +# Copyright 2022 - 2024 Paul Hänsch # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -16,38 +16,6 @@ . "$_EXEC/cgilite/file.sh" -CACHE_AGE=${CACHE_AGE:-300} -export MD_MACROS="$_EXEC/macros" -export MD_HTML="${MD_HTML:-false}" - -wiki() { - # Print content of a wiki page - # Get page from data or underlay dir, handle caching - local page="$(PATH "$1")" mdfile cache cachetime - - cache="$_DATA/pages/$page/#page:${LANGUAGE}.${USER_ID}.cache" - - mdfile="$(mdfile "$page")" || return 4 - acl_read "$page" || return 3 - - cachetime="$(stat -c %Y -- "$mdfile" "$cache" 2>/dev/null)" - - if [ "${cachetime#*${BR}}" -gt "${cachetime%${BR}*}" \ - -a "${cachetime#*${BR}}" -gt "$((_DATE - CACHE_AGE))" ]; then - cat "${cache}" - else - mkdir -p -- "$_DATA/pages/$page/" - # Macros expect to find page directory as working dir - ( cd -- "$_DATA/pages/$page/"; - md <"$mdfile" \ - | tee -- "${cache}.$$" - ) - grep -q '^%nocache' "$mdfile" \ - && rm -- "${cache}.$$" \ - || mv -- "${cache}.$$" "${cache}" - fi -} - case "${PATH_INFO}" in /"[.]"/*) # usually some file related to theme diff --git a/tools.sh b/tools.sh index 65327d7..b19a83d 100755 --- a/tools.sh +++ b/tools.sh @@ -19,6 +19,10 @@ include_tools="$0" . "${_EXEC}/cgilite/storage.sh" +CACHE_AGE=${CACHE_AGE:-300} +export MD_MACROS="$_EXEC/macros" +export MD_HTML="${MD_HTML:-false}" + md(){ local parser @@ -57,6 +61,34 @@ mdfile(){ return 0 } +wiki() { + # Print content of a wiki page + # Get page from data or underlay dir, handle caching + local page="$(PATH "$1")" mdfile cache cachetime + + cache="$_DATA/pages/$page/#page:${LANGUAGE}.${USER_ID}.cache" + + mdfile="$(mdfile "$page")" || return 4 + acl_read "$page" || return 3 + + cachetime="$(stat -c %Y -- "$mdfile" "$cache" 2>/dev/null)" + + if [ "${cachetime#*${BR}}" -gt "${cachetime%${BR}*}" \ + -a "${cachetime#*${BR}}" -gt "$((_DATE - CACHE_AGE))" ]; then + cat "${cache}" + else + mkdir -p -- "$_DATA/pages/$page/" + # Macros expect to find page directory as working dir + ( cd -- "$_DATA/pages/$page/"; + md <"$mdfile" \ + | tee -- "${cache}.$$" + ) + grep -q '^%nocache' "$mdfile" \ + && rm -- "${cache}.$$" \ + || mv -- "${cache}.$$" "${cache}" + fi +} + size_human(){ local size="$1"