2022-09-03 01:24:39 +02:00
|
|
|
|
|
|
|
local sql = require("lsqlite3")
|
|
|
|
local zlib = require("zlib")
|
|
|
|
|
|
|
|
local db = require("db")
|
|
|
|
local queries = require("queries")
|
|
|
|
local pages = require("pages")
|
|
|
|
local parsers = require("parsers")
|
|
|
|
local util = require("util")
|
|
|
|
local tagslib = require("tags")
|
|
|
|
local cache = require("cache")
|
|
|
|
local config = require("config")
|
|
|
|
local session = require("session")
|
|
|
|
|
|
|
|
local stmnt_update_bio
|
|
|
|
|
|
|
|
local oldconfigure = configure
|
|
|
|
function configure(...)
|
|
|
|
stmnt_update_bio = assert(db.conn:prepare(queries.update_bio))
|
|
|
|
return oldconfigure(...)
|
|
|
|
end
|
|
|
|
|
2022-09-20 00:03:45 +02:00
|
|
|
local function edit_bio(req)
|
2022-09-03 01:24:39 +02:00
|
|
|
local host = http_request_get_host(req)
|
|
|
|
local path = http_request_get_path(req)
|
|
|
|
local author, author_id = session.get(req)
|
|
|
|
|
|
|
|
http_request_populate_post(req)
|
|
|
|
local text = assert(http_argument_get_string(req,"text"))
|
|
|
|
local markup = assert(http_argument_get_string(req,"markup"))
|
2022-09-20 00:03:45 +02:00
|
|
|
|
2022-09-03 01:24:39 +02:00
|
|
|
local parsed = parsers[markup](text)
|
|
|
|
local compr_raw = zlib.compress(text)
|
|
|
|
local compr = zlib.compress(parsed)
|
2022-09-20 00:03:45 +02:00
|
|
|
|
|
|
|
assert(stmnt_update_bio:bind_blob(1,compr_raw) == sql.OK)
|
|
|
|
assert(stmnt_update_bio:bind(2, author_id) == sql.OK)
|
|
|
|
assert(util.do_sql(stmnt_update_bio) == sql.DONE, "Failed to update biography")
|
|
|
|
stmnt_update_bio:reset()
|
|
|
|
local loc = string.format("https://%s.%s",author,config.domain)
|
|
|
|
-- Dirty the cache for the author's index, the only place where the bio is displayed.
|
|
|
|
cache.dirty(string.format("%s.%s",author,config.domain))
|
2022-09-03 01:24:39 +02:00
|
|
|
http_response_header(req,"Location",loc)
|
|
|
|
http_response(req,303,"")
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
return edit_post
|