diff --git a/handlers/handlerpageview.cpp b/handlers/handlerpageview.cpp index 082f80f..c16d224 100644 --- a/handlers/handlerpageview.cpp +++ b/handlers/handlerpageview.cpp @@ -90,19 +90,20 @@ Response HandlerPageView::handleRequest(PageDao &pageDao, std::string pagename, std::optional revision; std::string templatepartname; + auto revisionDao = this->database->createRevisionDao(); try { if(revisionid > 0) { if(!effectivePermissions(pagename).canSeePageHistory()) { - auto current = this->database->createRevisionDao()->getCurrentForPage(pagename); + auto current = revisionDao->getCurrentForPage(pagename); if(current && current->revision > revisionid) { return errorResponse("Error", "You are not allowed to view older revisions of this page"); } } - revision = this->database->createRevisionDao()->getRevisionForPage(pagename, revisionid); + revision = revisionDao->getRevisionForPage(pagename, revisionid); if(!revision) { return errorResponse("Revision not found", "No such revision found"); @@ -122,7 +123,7 @@ Response HandlerPageView::handleRequest(PageDao &pageDao, std::string pagename, return r; } } - revision = this->database->createRevisionDao()->getCurrentForPage(pagename); + revision = revisionDao->getCurrentForPage(pagename); templatepartname = "page_view"; } } @@ -175,6 +176,15 @@ Response HandlerPageView::handleRequest(PageDao &pageDao, std::string pagename, } return std::string{}; }; + + auto firstRevision = revisionDao->getRevisionForPage(pagename, 1); + if(!firstRevision) + { + return errorResponse("Error", "Could not get first revision for page, which is odd. Solar flares?"); + } + + dynamicVarsMap["createdon"] = utils::toISODate(firstRevision.value().timestamp); + std::string resolvedContent = parser.parseDynamics(revision->content, dynamicParseCallback); if(revisionid > 0) {